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