Go语言之进阶篇请求报文格式分析
1、 请求报文格式分析
示例:
package main import ( "fmt" "net" ) func main() { //监听 listener, err := net.Listen("tcp", ":8000") if err != nil { fmt.Println("Listen err = ", err) return } defer listener.Close() //阻塞等待用户的连接 conn, err1 := listener.Accept() if err1 != nil { fmt.Println("Accept err1 = ", err1) return } defer conn.Close() //接收客户端的数据 buf := make([]byte, 1024*4) n, err2 := conn.Read(buf) if n == 0 { fmt.Println("Read err = ", err2) return } fmt.Printf("#%v#", string(buf[:n])) }
执行结果:
在浏览器中输入: 127.0.0.1:8000
请求报文: GET or POST
#GET / HTTP/1.1 Host: 127.0.0.1:8000 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9