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

Исходное сообщение
"tcp hex perl"

Отправлено Serj , 13-Дек-05 11:34 
не могу получить hex данные с сокета, пробую:

#!/usr/bin/perl
use IO::Socket;
use Symbol;
use POSIX;

$server = IO::Socket::INET->new(LocalPort => 1025,
                                     Type => SOCK_STREAM,
                                    Proto => 'tcp',
                                    Reuse => 1,
                                   Listen => 10)
   or die "making socket:$@\n";
while (1){
   undef $/;
   $client = $server->accept();
   open (TOPP, ">>./hexlog") or die "Not open $!";
   binmode(TOPP, q(:raw));

   binmode($client, q(:raw));
   $client->recv($data, POSIX::BUFSIZ,0);
   print "$data";
   print TOPP "$data";
   close TOPP;
}

exit 0;

ASCI получает без проблем, а hex кекс :(


Содержание

Сообщения в этом обсуждении
"tcp hex perl"
Отправлено mthawk , 13-Дек-05 12:36 
>не могу получить hex данные с сокета, пробую:
Из сокета ты получаешь данные. Байты.
Складываешь их в файл.
Если данные - текст открывая файл для просмотра ты увишишь там текст.
если данные - бинарны - ты увидишь там то же, что открывая бинарный файл.
если стоит задача в файл складывать hex коды того что получаешь - переменную $data нужно интерпретировать так
$data=~s/((.|\n))/sprintf("%.2X",unpack("C",$1)).' '/ge;
И будет тебе hex дамп получаемых данных

"tcp hex perl"
Отправлено Serj , 13-Дек-05 12:54 
просто оно вообще ничего не пишет в файл,
данные идут, смотрю tcpdump -X -in eth0

с той же железки ASCI данные принимаются нормально

выходит что на порт данные приходят,
а из сокета их вынуть не получается