Go_Http连接建立和处理
http 连接建立和处理 接收 http 请求并执行的过程 go func() { if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("s.ListenAndServe err: %v", err) } }() 前面提到, 在路由引初始化完成后,注册对应的路由和 handler,接下来在 main 函数中 http.Server 就会监听指定的端口,我们来看下http.Server 是如何接收请求并执行对应的处理函数的 httpServer 会调用 Serve(l net.Listener 函数,这个函数主要做了以下几件事情 在一个循环里面不断监听套接字是否有链接请求上来,如果有的话,创建一个新的连接对象 这个连接对象中有,有两个成员,一个是套接字对象(实现了conn接口),一个是指向service对象的指针 最后一行,通过启动一个新的协程来处理连接事务,并对外提供服务 func (srv *Server) newConn(rwc net.Conn) *conn { c := &conn{ server: srv, rwc: rwc, } if debugServerConnections { c.rwc = newLoggingConn("server", c.rwc) } return c } func (srv *Server) Serve(l net....