我使用Poco DatagramSocket通过UDP发送广播消息。当发送方和接收方的IP地址范围不同(发送方= 172.168.30.10和接收方= 172.168.28.30)时,我无法收到另一侧的消息。
我尝试通过255.255.255.255进行广播,并通过0.0.0.0进行接收,但是无法接收。
发件人代码
auto interfaces = Poco::Net::NetworkInterface::map();
for (auto& interface : interfaces)
{
auto addressess = interface.second.addressList();
for (auto& address : addressess)
{
auto ip = address.get<Poco::Net::NetworkInterface::BROADCAST_ADDRESS>();
if (ip.isIPv4Compatible())
{
DatagramSocket ds(Poco::Net::AddressFamily::IPv4);
ds.setBroadcast(true);
ds.sendTo(message.data(),
message.size(),Poco::Net::SocketAddress(ip,2001));
}
}
}
收件人代码
Poco::Net::SocketAddress ipaddress(Poco::Net::AddressFamily::IPv4,2001);
DatagramSocket ss(ipaddress);
ss.setBroadcast(true);
char buffer[4096];
int n = ss.receiveBytes(buffer, sizeof(buffer));
std::string msg = std::string(buffer, n);