Сабж.
необходимо для проэкта написать своего демона, который бы слушал порт, принимал сообщения, работая по определенному алгоритму,но получаю маленький затык, на этапе простой отправки приема данных:
#!/usr/bin/perl -w
use IO::Socket;
#use strict;
use POSIX;
require \'sys/syscall.ph\';
my $sock = IO::Socket::INET->new(LocalAddr => \'127.0.0.1\',
LocalPort => \'2727\',
Listen => 15,
Type => SOCK_STREAM,
Proto => \'tcp\');
fork() && exit;
close STDOUT; close STDERR; close STDIN;
chdir \'/tmp\';
syscall(&SYS_setsid);
$SIG{\'INT\'} = $SIG{\'QUIT\'} = $SIG{\'TERM\'} = \'quit\';
$SIG{\'HUP\'} = \'ignore\';
$SIG{CHLD} =\\&REAPER;
while (1){
while(my $client = $sock->accept()){
print $sock "My Net Daemon! Hello!\\n";
my $ddd = <$sock>;
print $sock $ddd;
#`echo $ddd>>/tmp/sk.s `;
}
}
#sleep 20;
#exit(0);
close($sock);
########### SUBs
sub REAPER {
1 until (-1 == waitpid(-1,WNOHANG));
$SIG{CHLD} =\\&REAPER;
}
Скрипт в демона превращается без проблем. На данном этапе fork для каждого нового подключения мне не нужен, потому его убрал. Суть не в этом.
Согласно кода, у меня в случае подключения к порту 2727 должно в окно терминала выкинуть "My Net Daemon! Hello!\\n". проверяю обычным telnet-ом:
[root@fbsd2.home] /usr/local/script/Dpm/tmp :./s_s_server.pl
[root@fbsd2.home] /usr/local/script/Dpm/tmp :telnet localhost 2727
Trying 127.0.0.1...
Connected to localhost.
Escape character is \'^]\'.
Killed
[root@fbsd2.home] /usr/local/script/Dpm/tmp :
Может кто подсказать, как правильно слать данные и принимать? У меня через дискрипторы не получается, send/recv тоже не идут, правда я мог с флагами напутать. Пока роюсь в этом направлении