如何绑定多个接口上的相同UDP端口

时间:2012-11-22 03:26:31

标签: c++ sockets udp bsd

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

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

1 个答案:

答案 0 :(得分:1)

bind(2) IPv4可以IPv6 INADDR_ANY {{3}} {{3}} {{3}} {{3}} {{3}}(你不必这样,但这是通常的做法) )。这将使单个套接字能够接受来自盒子上所有网络接口的数据包。

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

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