當我在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