Если сокет идентифицируется квартетом, какова информация о квартете прослушивающего сокета? - PullRequest
0 голосов
/ 07 июня 2018

Я пытался понять, что означает, что accept () создает новый сокет, и принятый ответ , этот вопрос был очень полезен.Мой вопрос приходит из раздела комментариев принятого ответа, так как я считаю, что он заслуживает отдельного вопроса.Насколько я понимаю,

  • (IP-адрес источника, порт-источник, IP-адрес назначения, порт назначения, протокол) определяет сокет.

  • Дескриптор сокетацелое число, которое работает как идентификатор сокета (исходный IP-адрес, исходный порт, целевой IP-адрес, целевой порт, протокол)

Теперь, помимо поставленного вопроса, я также хочу знать,мое понимание "разные дескрипторы сокетов, возвращаемые accept () и socket (), указывают на один и тот же сокет (исходный ip, исходный порт, ip получателя, порт назначения, протокол), но представляют разные состояния одного и того же сокета (состояние прослушивания, подключенное к клиентусостояние) так же, как тот же файл может быть в режиме чтения / записи "правильно или нет.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

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

Когда установлено клиентское соединение, accept() возвращает новый сокет, который подключен к конкретному клиенту, поэтому его можно идентифицировать как по IP-адресу сервера: порт, так и по IP-адресу клиента.

Сокет представляет собой конкретную конечную точку, которая можетбыть частью основного соединения или нет.Дескриптор сокета - это то, как приложение ссылается на данный сокет.Прослушивающий сокет имеет 1 конечную точку, тогда как подключенный сокет имеет 2 конечные точки.Вот почему accept() должен возвращать новый сокет, отличный от сокета прослушивания, для которого был вызван accept().

0 голосов
/ 07 июня 2018

Там нет ни одного.Прослушивающий сокет идентифицируется с помощью двух кортежей: IP-адрес и порт.

(исходный ip, исходный порт, ip назначения, порт назначения, протокол) определяет сокет.

Нет.Он определяет соединение.

Дескриптор сокета - это целое число, которое работает как идентификатор сокета

Правильно.

(исходный IP, исходный порт, целевой IP, порт назначения, протокол)

Нет, см. Выше.

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