使用Poco库通过udp发送和接收广播消息

时间:2019-06-09 05:37:38

标签: c++ networking poco-libraries

我使用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);

0 个答案:

没有答案