Я отправляю широковещательное сообщение по UDP, используя Poco DatagramSocket.когда диапазон 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);