Можно ли многоадресно передавать данные из разных процессов на один и тот же хост и порт?

У меня есть несколько процессов, отправляющих разные типы сообщений на один и тот же ip и порт, поэтому, когда я пишу клиент, мне понадобится только один поток чтения, а не несколько потоков чтения. Я приступил к разработке шаблона или моя стратегия не рекомендуется? Очевидно, что я мог бы отправлять на другой порт ip: но это означало бы, что у меня на клиенте несколько потоков. Какие-нибудь мысли?

1 ответ

Вы отправляете многоадресные данные группе и порту, а не "хосту". Процессы прослушивания должны присоединиться к этой группе, а процесс отправки должен включить IP_MULTICAST_LOOP опция сокета. Взгляните на этот Multicast over TCP / IP HOWTO.

Отказ от ответственности: я не знаю наверняка, но я считаю, что значение этого параметра сокета в Windows перевернуто, поэтому, если вам не повезло - проверьте MSDN или что-то еще.

Изменить 0:

Совершенно нормально, что несколько процессов отправляют данные на один и тот же порт UDP, поскольку степень детализации на стороне получателя составляет одну датаграмму за чтение, и вы знаете, откуда была отправлена ​​каждая датаграмма (см. recvfrom(2)).

Другие вопросы по тегам