golang net/http 的 ListenAndServe 的工作方式(取代 listen、accept)

博客园 / 2024-06-05 / 原文

 

 

在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操作。

tcp server 为什么需要 accept .

 

  • IP 地理位置查询
  • 多版本 PHP 运行代码
  • 在线 IPFS 存储
  • 以太 ETH 单位转换器
  • 以太坊地址转换