Почему только один UDP-клиент, работающий на том же хосте, может получать сообщения? - PullRequest
0 голосов
/ 11 января 2020

Я написал две программы на C ++, работающие в Ubuntu: одна - программа-клиент UDP, а другая - программа-сервер UDP. Программа сервера отправляет многоадресный пакет UDP каждые 5 секунд. Клиентская программа (программы) получает пакет сервера и отвечает. Клиентская программа имеет простой l oop и использует функцию recvfrom () для чтения данных (синхронно), а затем использует sendto () для ответа на сервер.

Я запускаю клиент (A) и сервер программирует на одном хосте и все работает хорошо. Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю второй экземпляр клиентской программы B на том же хосте, тогда клиент A прекращает получать данные, и только клиент B получает данные. Если я остановлю клиент A и перезапущу его, то клиент A получит данные, но клиент B прекратит получать данные. Я уже использую setsockopt (SO_REUSEADDR) в моем клиенте, поэтому я могу запустить несколько экземпляров моего клиента.

Как я могу сделать так, чтобы несколько экземпляров клиентской программы могли получать данные одновременно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...