The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"как проверить, что сервер закрыл сокет"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"как проверить, что сервер закрыл сокет"  
Сообщение от bicycle repair man email on 31-Янв-06, 13:37 
не могу найти в документации способа, как проверить, что уже открытый сервером сокет, через некоторое время был им закрыт.
код типа:

use IO::Socket::INET;
...
$sock = IO::Socket::INET->new(
                               PeerAddr  => $TargetHost,
                               PeerPort  => $TargetPort,
                               Proto     => 'tcp'
                              );
if( defined( $sock ) )
{
# сокет открыт
# ждем n секунд
...
#проверяем
???
}

спасибо

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "как проверить, что сервер закрыл сокет"  
Сообщение от idle (ok) on 31-Янв-06, 18:32 
$sock->connected; # Если true значит connected.
http://search.cpan.org/~nwclark/perl-5.8.7/ext/IO/lib/IO/Socket.pm#METHODS


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "как проверить, что сервер закрыл сокет"  
Сообщение от bicycle repair man email on 31-Янв-06, 19:02 
>$sock->connected; # Если true значит connected.
>http://search.cpan.org/~nwclark/perl-5.8.7/ext/IO/lib/IO/Socket.pm#METHODS

пробовал. у меня он всегда true...

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "как проверить, что сервер закрыл сокет"  
Сообщение от rWizard email(??) on 01-Фев-06, 12:41 
http://www.opennet.me/openforum/vsluhforumID9/3520.html
Учтите, если соединение не закрывается нормально, а, например, удаленный хост просто отключается от сети, то система по уполчанию реагирует на это через некотрое время
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "как проверить, что сервер закрыл сокет"  
Сообщение от bicycle repair man email on 01-Фев-06, 13:14 
>http://www.opennet.me/openforum/vsluhforumID9/3520.html
>Учтите, если соединение не закрывается нормально, а, например, удаленный хост просто отключается
>от сети, то система по уполчанию реагирует на это через некотрое
>время

каким образом?

у меня еще дело усложняется тем, что клиент работает под win32, и как я понимаю SIGPIPE при записи в мертвый сокет мне там не получить.

мое решение:

$select = IO::Select->new( $socket );
@readable = $select->can_read( 0 );

сервер ничего не возвращает, так что @readable для него всегда пустой.
как только сервер закрыл соединение, то $socket становиться читаемым, и мы оттуда береи EOF.

второй способ: записать два раза в сокет, на второй раз $! не пустой, если соединения нет.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру