当我在UDP服务器上工作时,我通常将套接字设置为侦听指定的端口并接受任何IP。请记住,同步接收在这里正常工作。Boost Asio UDP服务器套接字侦听指定的IP
std::unique_ptr<boost::asio::ip::udp::socket> socketUDP;
socketUDP.reset(new udp::socket(io_serviceUDP, udp::endpoint(udp::v4(), 9999)));
但是,我真的很想有2个不同的服务器应用程序监听相同的端口(9999),但只接受一个单一的IP(我已经知道了IP)。每个应用程序都有自己的客户端,拥有自己的IP。 但由于某些原因如下不起作用(不接受在应用程序的任何数据包,而Wireshark的可以看到它)
socketUDP.reset(new udp::socket(m_io_serviceUDP, udp::endpoint(asio::ip::address::from_string("169.254.1.2"), 9999)));
请注意: 1)按照答案:Issue with broadcast using Boost.Asio这应该实际上工作。当然,我的理解是不完全正确的,因为我失去了一些东西
2)所提供的IP是有效的,工作的,发送数据(通过Wireshark的确认),并能够被ping通
做你现在的工作?我使用Boost 1.66的UDP组播样本,它工作。 – CaTx