Почему вызов функции listen () не нужен при использовании сокета UDP? - PullRequest
10 голосов
/ 19 ноября 2011

Мне просто интересно этот вопрос, кто-нибудь может мне сказать?

Ответы [ 3 ]

10 голосов
/ 19 ноября 2011

TCP - это потоковый протокол между сервером и клиентами.Протокол надежен и требует отдельного состояния для каждого клиентского потока <> сервера.Протокол соединения, инициированный прослушиванием / принятием, устанавливает состояние соединения с сервером <> клиента.UDP - это ненадежная датаграмма, протокол (сообщения) без установления соединения, поэтому нет необходимости прослушивать новые соединения - дейтаграммы могут поступать в любом порядке из любого источника.

4 голосов
/ 19 ноября 2011

Это потому, что UDP не ориентирован на соединение, как TCP, поэтому нет смысла в прослушивании / принятии, как в SOCK_STREAM.Попробуйте прочитать параграф «2.1. Два типа интернет-сокетов» в руководстве Beej по сетевому программированию и в целом руководство интересно.

0 голосов
/ 19 ноября 2011

Если я правильно помню, нет никакого метода Listen (), связанного с Udp, вместо этого вы вызываете receive (), который аналогичен Listen () при использовании TCP, оба будут блокировать процесс, пока не получат пакеты. надеюсь, что это отвечает на ваш вопрос.

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