Можно ли проверить, отключено ли TCP-соединение, не записав в него? - PullRequest
2 голосов
/ 28 марта 2012

Мне интересно, можно ли определить, было ли разорвано принятое соединение с сокетом, не пытаясь записать в него.

IO :: Select по-прежнему указывает на то, что в сокет можно записать с помощью can_write, даже если соединение с сокетом было потеряно.

Можно ли проверить, было ли отключено TCP-соединение, без записи в него (в случае незапланированного отключения интернета).

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Это больше проблема TCP, чем проблемы Perl.

Такие события, как отключение кабельного / интернет-соединения, не приводят к событию TCP.Таким образом, вы должны написать TCP-соединение, чтобы убедиться, что оно все еще подключено.Вы можете добавить сообщение ping / echo для единственного члена, чтобы узнать, что соединение все еще доступно.

1 голос
/ 28 марта 2012

Как правило, нет. Обычно вы получаете ошибку только тогда, когда пишете: если вы никогда не пишете, она просто будет сидеть там. Если вы полностью теряете сетевое соединение, я видел ошибки (в Windows: не пробовал в Linux), но обычно вам нужно писать в него, чтобы убедиться, что он жив.

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