|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Comoderator of RU.CGI.PERL 2:5020/371.32 03 Aug 2001 14:29:19 To : V Maslikhov Subject : Moderatorial [*] (Re: Проблема ТСР клиент - сервер) -------------------------------------------------------------------------------- VM> Друзья мои ! VM> Подскажите как выйти из такого неприятного положения : VM> если я открываю TCP сервер как VM> use IO::Socket; VM> $server = IO::Socket::INET->new(LocalPort => "3000", VM> Type => SOCK_STREAM, VM> Reuse => 1, VM> Listen => 1) or die "$@\n"; VM> и далее жду соединения от клиента VM> client = $server->accept(); VM> то после соединения клиента на мой сервер работать с ним удается через VM> $client, VM> все - ОК, но если в процессе работы клиент отвалится, то я никак не могу VM> определить это. VM> Проверки $client'а типа while($client) или if($client) дают положительный VM> ответ, т.е. вроде как VM> можно работать с $client дальше, даже первый print $client "lkjlk"; VM> проходит VM> успешно, VM> а вот уже следующий print $client "lkjlk"; приводит к ошибке "Broken pipe" VM> и VM> вся программа VM> умирает напроч. VM> Как можно проверить действительное состояние $client ??? VM> С нетерпением жду ваших подсказок, VM> Слава. VM> > VM> > Во-первых, оффтопик, а во-вторых, установкой обработчика SIGPIPE. Если клиент умирает молча, то сервер может узнать об этом только при попытке общения с ним. При которой он получит SIGPIPE. -- FIDO: Artem Chuprina, 2:5020/371.32, comoderator of RU.CGI.PERL Internet: Artem Chuprina <cmrcp@ran.pp.ru>, comoderator of fido7.ru.cgi.perl --- slrn/0.9.7.0 (Linux) * Origin: AKA с подствольным плюсомётом (2:5020/371.32) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/74005057d1895.html, оценка из 5, голосов 10
|