URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1254
[ Назад ]

Исходное сообщение
"Socket - как прописать таймаут на перл без IO::Socket ? "

Отправлено RUSLAN , 08-Янв-03 22:23 
use Socket;
$port=80;
$remote_host=~s/^\s*//;
$remote_host=~s/\s*$//;
$doc=~s/^\s*//;
$doc=~s/\s*$//;
socket(SOCK,PF_INET,SOCK_STREAM,getprotobyname('tcp')) || return 0;
$inet_addr=gethostbyname($remote_host) || return 0;
$paddr=sockaddr_in($port,$inet_addr);
bind(SOCK,$paddr);
connect(SOCK,$paddr) || return 0;
select(SOCK);
$|=1;
select(STDOUT);
print SOCK "GET $doc HTTP/1.0\n";
print SOCK "Host: $remote_host\n";
print SOCK "Accept: text/html\n";
print SOCK "Accept: text/plain\n";
print SOCK "Accept: image/gif\n";
print SOCK "User-Agent: MSIE 5.01\n";
print SOCK "\n";
@sockdata=<SOCK>;
close(SOCK);

Содержание

Сообщения в этом обсуждении
"RE: Socket - как прописать таймаут на перл без IO::Socket ? "
Отправлено uldus , 09-Янв-03 10:18 
Примерно так:

eval {
   local $SIG{ALRM} = sub { die "timeout (по die будет выход из eval блока)\n"; }
   alarm(60); # 60 сек. таймаут
   ..... чтение данных из сокета....
   alarm(0);
}