2

我有两个网络接口,并试图在它们上绑定到相同的 UDP 端口,但是当我尝试绑定到第二个时出现错误,EADDRINUSE. 当我绑定到套接字时,我传递了一个sockaddr*设置端口和要使用的唯一 IP 地址的位置。

我必须使用套接字选项SO_REUSEADDR吗?这将允许在任一套接字上接收消息,还是将它们转到与其绑定的 IP 地址匹配的套接字?

4

1 回答 1

2

您可以为IPv4IPv6提供bind(2)一个套接字(您不必这样做,但这是通常的方法)。这将使该单个套接字能够接受来自盒子上所有网络接口的数据包。INADDR_ANYin6addr_any

然后SO_REUSEADDR套接字选项将允许您将其他套接字绑定到更具体的地址,即单独的接口和相同的端口。

数据包将在绑定到与给定数据包的目标 IP 地址最匹配的地址的套接字上接收。

于 2012-11-22T03:58:53.833 回答