Когда я работаю на 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) и может быть пингуется
ли у вас это работает сейчас? Я использую образец для многоадресной передачи UDP от Boost 1.66, и он работает. – CaTx