отправлять и получать широковещательные сообщения через UDP с библиотекой Poco - PullRequest
0 голосов
/ 09 июня 2019

Я отправляю широковещательное сообщение по 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);
...