在 TCP/UDP 个套接字中绑定

Bind in TCP/UDP Sockets

绑定函数用于将名称(sockaddr 结构)分配给套接字描述符。为什么 TCP 服务器需要它而不是 TCP 客户端?为什么 bot UDP 客户端和服务器需要它?

我也在 UDP 客户端中不使用 bind() 编写了正确的工作代码。

我不明白为什么 bind() 没有被普遍使用,即在上述所有情况下。

绑定只是必需的,如果没有其他方法让计算机知道将数据包发送到哪个程序。对于无连接程序,这只是接收端。

请看一下socket connect() vs bind()这个post。

我的解释比我能做的要好得多。如果你有任何问题之后。欢迎提问:)

客户端调用 connect 隐式 bind 到内核提供的临时可用端口。它不需要专门绑定,因为它是连接的发起者。服务器明确需要绑定,因为它需要告诉外部世界(客户端)他们如何到达服务器。 port.Client 上的服务器 listen 知道已发布的端口启动到它的连接。

现在服务器可以向客户端发送数据包,因为在建立连接时,对等详细信息(IP 和端口)变得已知并且是连接标识符的一部分。

以上内容适用于 TCP 和 UDP。 (UDP不会有connect)