LINUX.ORG.RU

Perl binary socket


0

2

Цчу перл и дошел до сокетов. Пытаюсь передать произвольные данные через сокеты. Вот так отправляю:

 my $msg = pack("(C)*",@{$workers{$pos}->{buff}});
 write($workers{$pos}->{sock},$msg,256);

А вот так принимаю:

 my $conn = $sock->accept();
 read($conn, $buffer, 256);
 my @up = unpack("(C)*",$buffer);

Сокеты создаю вот так:

my $sock = IO::Socket::INET->new(
        LocalHost => '127.0.0.1',
        LocalPort => '12341',
        Proto => 'tcp',
        Listen => MAXCONN,
        Reuse => 1,
        )

Простыо через принт данные передаются, а так не хотят. В чем я ошибся?

Используй sysread, syswrite вместо буферизированных write/read. Или используй методы к IO::Socket, чего лес городить без матчасти? :-D

gh0stwizard ★★★★★
()

А смысл в таких преобразованиях pack/unpack?

Olegymous ★★★
()

А зачем учишь перл? Мне просто интересно. Говорят вроде он умер и ни кому не нужен.

ЗЫ сам почитываю кемелбук, просто фан

anonymous
()
Ответ на: комментарий от anonymous

Вот примерно тоже ради фана. Иногда надо писать скриптики для мелкой обработки разного текста. Попробовал писать на перл - понравилось, начал разбиратся.

Confucij
() автор топика
Ответ на: комментарий от gh0stwizard

Спасибо, уже сам дошел до sysread. Учить матчасть - не)) Лучше забег по граблям))

Confucij
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.