LINUX.ORG.RU

UNIX сокет на perl


0

0

Сервер:

$server=IO::Socket::UNIX->new(Local => "/tmp/ghsock", Type=>SOCK_DGRAM, Listen => 5); $server->recv($data,1000,0); $server->send("$data",0);

Клиент:

$sock=IO::Socket::UNIX->new(Peer=> "/tmp/ghsock", Type=>SOCK_DGRAM);

$msg="test"; $sock->send($msg); $sock->recv($msg,1000,0);

Сообщение принимает, а ответ не может отправить. Выдает: send: Cannot determine peer address at

Что я делаю не так?

anonymous

perldoc perlipc

Here's a sample Unix-domain client:

#!/usr/bin/perl -w
use Socket;
use strict;
my ($rendezvous, $line);

$rendezvous = shift || '/tmp/catsock';
socket(SOCK, PF_UNIX, SOCK_STREAM, 0) || die "socket: $!";
connect(SOCK, sockaddr_un($rendezvous)) || die "connect: $!";
while (defined($line = <SOCK>)) {
print $line;
}
exit;

And here's a corresponding server. You don't have to
worry about silly network terminators here because Unix
domain sockets are guaranteed to be on the localhost, and
thus everything works right.

и далее там пример сервера на 5 страниц....

vilfred ☆☆
()

Мне не надо SOCK_STREAM мне надо SOCK_DGRAM или для UNIX сокетов это одно и тоже? Вот что не так в моем примере?

anonymous
()

может, я конечно ошибаюсь, но по моему, ты про UDP... там что то было на премет UDP серверов(либо это также просто как и сокет открыть с помощью use Socket, либо либу надо искать а цпане). Вобщем не разбирался, не знаю...

vilfred ☆☆
()

Не работал ни с Перлом, ни с датаграммами, ни с... ни с чем ;)

Однако, по крайней мере, для нормальных интернетовских соединений $server->recv должен бы выдавать сконнекченное соединение, в _кое_ и производится запись. А не в сам $server. Для прочих сокетов последовательность, по идее, одинакова...

Впрочем (в дальнейшем не уверен), для датаграмм сие последнее также места может не иметь: _куда_ ты собрался писать? Датаграммы, as я пол, характерны как раз неустановлением сеанса -- то бишь, по идее, ты должен извлечь адрес посылателя из соединения и послать туда, нет?

С уважением -- Смоляное Чучелко

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