@Olegtm

Сколько клиентов могут одновременно передавать данные на один UDP порт (windows)?

Есть сервер (C#, Windows) который принимает и передаёт сообщения по UDP большому количеству устройств > 10000
Вопрос: могут ли они всё работать через один порт?
В ТСР после установления соединения каждое устройство получает свой socket, и чтение/передача данных "распаралеливается" естественным образом.
А в UDP как? Выглядит как будто данные считываются последовательно, одно за другим...
Или я что то упускаю?
  • Вопрос задан
  • 623 просмотра
Пригласить эксперта
Ответы на вопрос 2
XXXXPro
@XXXXPro
Fullstack Web developer
Всё верно: в UDP нет соединений, там идёт обмен данными независимыми пакетами. Все эти пакеты приходят в один сокет, даже если отправители разные. Считывание из этого сокета идёт последовательно в порядке прихода пакетов. Также нужно иметь в виду, что если пакетов идёт очень много, а обрабатываются они медленно, возможна ситуация, когда у операционной системы не хватит буферов для приёма новых пакетов, и они начнут терятся.
Чтобы понять, от кого пакет, и что с ним делать, нужно либо в самих данных передавать какой-нибудь идентификатор отправителя, либо вместо recv использовать функцию recvfrom. Она получает не только сам пакет, но и IP-адрес отправителя.
Ответ написан
fzfx
@fzfx
18,5 дм
Вопрос: могут ли они всё работать через один порт?
Если под портом понимается входящий UDP-порт сервера, то могут.

В ТСР после установления соединения каждое устройство получает свой socket
В UDP так же (образуется сокет), только установления соединения нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы