C++ 将套接字绑定到特定网络

C++ 将套接字绑定到特定网络,c++,udp,C++,Udp,我的计算机连接到多个网络,例如网络A和网络B。 我只想从网络B接收UDP广播数据包 目前,我正在打开一个UDP套接字并将其绑定到INADDR_ANY sockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons( (unsigned short) 11000 ); if ( bind( handle, (const sockadd

我的计算机连接到多个网络,例如
网络A
网络B
。 我只想从网络B接收UDP广播数据包

目前,我正在打开一个UDP套接字并将其绑定到INADDR_ANY

sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons( (unsigned short) 11000 );

if ( bind( handle, (const sockaddr*) &address, sizeof(sockaddr_in) ) < 0 )
{
       //Operation Failed!
       return false;
}
sockaddr\u地址;
address.sin_family=AF_INET;
address.sin_addr.s_addr=INADDR\u ANY;
address.sin_port=htons((无符号短)11000);
if(bind(handle,(const sockaddr*)和address,sizeof(sockaddr_in))<0
{
//操作失败!
返回false;
}

如何确保仅从网络B接收消息?

广播地址将以所有1位结尾,因此假设“hoNetAddr”是主机排序的地址:

uint32_t hoBcastAddr = (hoNetAddr & hoNetMask) | (~hoNetMask);
// e.g. 192.168.0.0/255.255.255.0 =>
//      (C0A80000 & FFFFFF00) | (/*inverted netmask*/ 000000FF)
// broadcast is: C0A800FF
address.sin_addr.s_addr = htonl(hoBcastAddr);
(假设IPv4)

不等于
(~0&~hoNetMask)
(~hoNetMask)?