C++ 如何在多个接口上绑定到同一UDP端口
我有两个网络接口,正在尝试绑定到两个网络接口上的同一UDP端口,但在尝试绑定到第二个网络接口时出错,C++ 如何在多个接口上绑定到同一UDP端口,c++,sockets,udp,bsd,C++,Sockets,Udp,Bsd,我有两个网络接口,正在尝试绑定到两个网络接口上的同一UDP端口,但在尝试绑定到第二个网络接口时出错,EADDRINUSE。当我绑定到套接字时,我会传递一个sockaddr*,在这里我设置了要使用的端口和唯一IP地址 我是否必须使用套接字选项以便重新使用EADDR?这将允许在任一套接字上接收消息,还是消息将转到与其绑定的IP地址相匹配的套接字?您可以使用一个套接字来INADDR\u ANYfor或in6addr\u ANYfor(您不必这样做,但这是通常的方法)。这将使单个套接字能够接受来自机箱上
EADDRINUSE
。当我绑定到套接字时,我会传递一个sockaddr*
,在这里我设置了要使用的端口和唯一IP地址
我是否必须使用套接字选项以便重新使用EADDR
?这将允许在任一套接字上接收消息,还是消息将转到与其绑定的IP地址相匹配的套接字?您可以使用一个套接字来INADDR\u ANY
for或in6addr\u ANY
for(您不必这样做,但这是通常的方法)。这将使单个套接字能够接受来自机箱上所有网络接口的数据包
然后,SO_REUSEADDR
socket选项将允许您将其他套接字绑定到更具体的地址,即单个接口和同一端口
数据包将在绑定到与给定数据包的目标IP地址最匹配的地址的套接字上接收。能否显示代码?在没有看到的情况下很难说出任何事情。那么,是否需要为“any”创建一个套接字,并为特定地址创建多个套接字?您可以为所有接口创建一个套接字。那很容易。如果处理/功能不同,或者需要分离应用程序(如在托管环境中),则只需要不同的套接字。