【发布时间】:2014-03-06 17:56:06
【问题描述】:
我有两个客户端,我想将它们连接到使用 UDP 套接字的守护进程。它使用 IP addr1 和 Port#1 进行通信。在每个客户端中,我创建一个与守护进程使用的 IP 和端口#1 相同的套接字。可以为两个客户端使用相同的 IP 地址和端口号吗?
【问题讨论】:
我有两个客户端,我想将它们连接到使用 UDP 套接字的守护进程。它使用 IP addr1 和 Port#1 进行通信。在每个客户端中,我创建一个与守护进程使用的 IP 和端口#1 相同的套接字。可以为两个客户端使用相同的 IP 地址和端口号吗?
【问题讨论】:
这取决于您所说的“使用”。
使用守护程序正在侦听的 IP 和端口对两个客户端执行 connect() 或 sendto() 是正确的。
任何客户端都不能使用守护程序正在侦听的 IP 和端口执行bind()。
【讨论】:
bind() 仅在您希望控制客户端将使用的源 IP 和/或端口时使用。当您在 UDP 套接字上调用 sendto() 时,操作系统将为您执行隐式 bind(),因此通常客户端不需要调用 bind()。