Показать сообщение отдельно

  #14  
Старый 22.08.2009, 01:35
ShAnKaR
Постоянный
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме:
4646474

Репутация: 1424


Отправить сообщение для ShAnKaR с помощью ICQ
По умолчанию

Цитата:
Сообщение от f1rebl00d  
Хороша фигня и полезна.

..
Данный скрипт отлично работает в Nix, в windows при использованиия cygwin.

При использовании Activeperl работать не будет, ето связано с неблокирующими сокетами, почитать можно здесь тыц
кароче беседовал с автором tcpforward- вроде договорились под винду подправить , мой предложенный вариант:
Цитата:
sub transfer {
my ($rfh, $wfh) = @_;
my $total = 0;
my $bytes;

while ($bytes = sysread $rfh, my $data, $bufsize) {
$total += $bytes;

while ($bytes > 0) {
my $written = syswrite $wfh, $data, $bytes, length($data) - $bytes;
die "write error: $!" if !defined $written && !$!{EAGAIN};
$bytes -= $written if defined $written;
}
}

verbose(1, sprintf 'xfer %d %d %d', fileno $rfh, fileno $wfh, $total);

return defined $bytes?0:1;

}
и
Цитата:
sub nonblock {

my $fh = shift;

if ($^O eq 'MSWin32') {

my $nonblocking = pack("L",1);

ioctl($fh, 0x8004667e, unpack("I",pack('P',$nonblocking))) == 0 or die "ioctlsocket(\$sock, FIONBIO,...):$!" ;

}

else{

my $flags = fcntl $fh, F_GETFL, 0 or

die "fcntl error: $!";

fcntl $fh, F_SETFL, $flags | O_NONBLOCK or

die "fcntl error: $!";

}

return $fh;

}
трабла из за неблокируюших сокетов, и из за возникновении ошибок в сокетах. разраб чегото молчит пока, я тестил на виртуалке под виндой вроде пашет на активперл.

Последний раз редактировалось ShAnKaR; 22.08.2009 в 01:38..
 
Ответить с цитированием