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 } } }