Go语言学习路

Go网络编程HTTP

2021-08-06  本文已影响0人  TZX_0710

http编程

Web服务器的工作原理可以简单归纳为

  • 客户端通过TCP/IP协议建立到服务器的TCP连接
  • 客户端向服务器发送HTTP协议请求包,请求服务器的资源文档
  • 服务器向客户机发送HTTP协议应答包,如果有动态语言,服务器调用动态语言的解释引擎处理,然后再返回给客户端
  • 客户端与服务器断开。由客户端解释HTML文档,在客户端渲染。

Http协议

HTTP协议承载在TCP协议之上

服务端

package main

import (
  "fmt"
  "net/http"
)

func main() {
  http.HandleFunc("/go", func(writer http.ResponseWriter, request *http.Request) {
      fmt.Println(request.RemoteAddr, "连接成功")
      fmt.Println(request.Method, "请求方式")
      fmt.Println(request.URL.Path, "请求地址")
      fmt.Println(request.Header, "请求头")
      fmt.Println(request.Body, "请求内容")
      writer.Write([]byte("helloWorld"))
  })
  http.ListenAndServe("127.0.0.1:8080", nil)
}

客户端

package main

import (
  "fmt"
  "io"
  "net/http"
)

func main() {
  resp, _ := http.Get("http://127.0.0.1:8080/go")
  defer resp.Body.Close()
  // 200 OK
  fmt.Println(resp.Status)
  fmt.Println(resp.Header)

  buf := make([]byte, 1024)
  for {
      // 接收服务端信息
      n, err := resp.Body.Read(buf)
      if err != nil && err != io.EOF {
          fmt.Println(err)
          return
      } else {
          fmt.Println("读取完毕")
          res := string(buf[:n])
          fmt.Println(res)
          break
      }
  }
}

上一篇 下一篇

猜你喜欢

热点阅读