|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 19 Nov 2002 16:54:50 To : "1Eugene Lototsky" Subject : Re: Сокеты -------------------------------------------------------------------------------- Здравствуй, 1Eugene Lototsky. 1L> Как услышать, что говорит демон? Что не так? 1L> Есть 2 скрипта: демон и клиент. Демон работает от рута и слушает обычного 1L> клиента через сокет: 1L> === демон === 1L> $sockname='/tmp/control.sock'; 1L> socket sock, AF_UNIX, SOCK_STREAM, 0; 1L> socket newsock, AF_UNIX, SOCK_STREAM, 0; 1L> unlink ($sockname); #killing file if exists 1L> $sun = sockaddr_un($sockname); 1L> bind sock, $sun || die "bind"; 1L> chmod 0666, $sockname; 1L> listen sock, 1; 1L> while (1) { 1L> print "deamon running...\n"; 1L> accept newsock, sock; 1L> recv newsock, $data, 500, 0; 1L> ($host,$action) = split (';', $data); 1L> if ($action eq "start") { 1L> $output = start_firewall($host); 1L> } elsif ($action eq "stop") { 1L> $output = stop_firewall($host); 1L> } 1L> print sock $output; 1L> } 1L> ============ 1L> Клиент, передав информацию демону, должен забрать от него ответ. 1L> === клиент === 1L> my $sockname='/tmp/control.sock'; 1L> socket sock, AF_UNIX, SOCK_STREAM, 0; 1L> $sun = sockaddr_un ($sockname); 1L> connect sock, $sun || die "bad socket"; 1L> send sock, $hostact, 0; 1L> while (chomp ($msg=<>)){ 1L> print "Server $hishost responded ``$msg''\n"; 1L> } 1L> shutdown sock, SHUT_RDWR; 1L> ============ Так ты читаешь-то в клиенте откуда? А надо - из сокета. Hу и кроме того, со строгим чередованием надо осторожно. Если у тебя там данных больше, чем сервер способен съесть за раз, рискуешь нарваться на deadlock, когда оба пытаются записать и не читают, а сокет уже забит данными в обе стороны. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/14454b498dcbf.html, оценка из 5, голосов 10
|