【发布时间】:2016-09-23 14:23:05
【问题描述】:
当我在 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 多播示例,它可以工作。
标签: c++ boost udp boost-asio