Что означает время ожидания соединения в контексте вызова select () - PullRequest
1 голос
/ 05 декабря 2010

Я заметил, что иногда select возвращает с установленным Connection Timed out на errno, но я не знаю, почему он это сделает, как он узнает? И как ты думаешь с этим бороться? (Я предполагаю, что это означает, что время одного из соединений истекло, возможно, ACK не был услышан в соответствующее время). Я полагаю, что единственный законный случай этого будет, если там находится сокет сервера, и вы ранее выполняли неблокирующее соединение? В этом случае запуск соединения через этот сокет снова вернет вам, был ли он подключен или нет, и это будет способ справиться с этим .... но есть ли лучший способ?

Заранее спасибо.

1 Ответ

0 голосов
/ 05 декабря 2010

Как сказал выше комментатор, это, вероятно, результат select() для неблокирующей connect(). Если это вообще не тайм-аут, в этом случае это может иногда происходить и для входящих принятых TCP-сокетов. В любом случае, ниже приведены два очень полезных руководства по обновлению памяти при использовании select():

http://www.lowtek.com/sockets/select.html

http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select

http://beej.us/guide/bgnet/output/html/multipage/advanced.html#blocking

См. Также этот вопрос для примера Python:

Как получить неблокирующие сокеты connect ()?

Приветствие.

...