2012-04-05 2 views
1

Поскольку можно построить сокет tcp и сокет udp, который прослушивает один и тот же порт, возможно ли построить несколько сокетов, которые прослушивают сообщения udp на одном и том же порт, причем каждый из них прослушивает разные конечные точки источника?Несколько гнезд UDP для прослушивания определенного источника на одном и том же порту

Понятно, что в настоящее время создается впечатление, что «правильный» способ сделать это просто для того, чтобы иметь один сокет, прослушивающий все сообщения udp, и определить источник на уровне приложения.

ответ

2

Возможно, что несколько гнезд UDP прослушивают одну и ту же локальную пару IP/Port, используя опцию сокета SO_REUSEADDR, но нет возможности рассказать каждому сокету только принимать пакеты для своей предполагаемой удаленной пары IP/Port, поэтому нет гарантии, какой сокет получит тот пакет. Так что да, правильным вариантом является использование одного сокета, который смотрит на отправляющий IP/порт каждого полученного пакета и соответственно направляет пакет.

Смежные вопросы