golang net/http 的 ListenAndServe 的工作方式(取代 listen、accept)
在Go的 net/http 包中,当你使用 ListenAndServe 或 ListenAndServeTLS 函数启动一个HTTP服务器时,
你不需要直接调用 listen 和 accept 操作,因为这些函数已经为你处理了这些底层的网络细节。
ListenAndServe 函数的工作方式如下:
1. 它首先调用net.Listen来监听指定的网络地址(例如"localhost:8080")。
2. 然后,它开始一个无限循环,调用 http.Server 的 Serve 方法来处理传入的连接。
Serve方法内部包含了对 accept 操作的处理,它会接收来自 Listen 的新的客户端连接,并为每个连接创建一个新的 goroutine 来处理请求。
如果你想要更底层的控制,你可以创建自己的 http.Server 实例,手动调用 Listen,然后使用 Server.Serve 来处理连接,或者直接使用 Server.ServeTCP、Server.ServeUnix 等方法,这些方法内部都会处理accept操作。