zep Опубликовано 28 декабря, 2010 · Жалоба Всем привет. Столкнулся с проблемой. Не могу получить и отправить данные в UDP сокет из Perl скрипта, сквозь Xinetd. Конфиг Xinetd: service check_state { disable = no port = 30001 socket_type = dgram protocol = udp wait = yes user = root server = /scripts/check_state.pl #env = HOME=/var/cvs } Perl код: #!/usr/bin/perl use IO::Handle; use IO::Socket; use Socket; if (-S STDIN) { system("echo 'is sock' >> /tmp/xinetd.log"); } else { exit; } my $sock = IO::Socket->new_from_fd(\*STDIN,"+<") or die "$!"; STDIN->fdopen($sock,"<") || die $!; STDOUT->fdopen($sock,">") || die $!; STDERR->fdopen($sock,">") || die $!; print "test"; #$sock->send("test"); exit; Итог: клиент данных не получает. У кого-нибудь есть опыт в данном случае?? Заранее спасибо П.С. В режиме TCP сервера - писал. Там проблем не возникло. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
marikoda Опубликовано 28 декабря, 2010 (изменено) · Жалоба попробуйте вместо xinetd использовать netcat Изменено 28 декабря, 2010 пользователем marikoda Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zep Опубликовано 28 декабря, 2010 · Жалоба попробуйте вместо xinetd использовать netcat У меня уже есть такие же решения под Xinetd, только по TCP. Я считаю, лучше разобраться с данной задачей из соображения незахламления сервера кучами сервисов. Истина где-то рядом... 8) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 28 декабря, 2010 · Жалоба Google-Fu! http://www.mail-archive.com/beginners@perl.org/msg39525.html Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zep Опубликовано 28 декабря, 2010 · Жалоба Google-Fu!http://www.mail-archive.com/beginners@perl.org/msg39525.html Я видел. Гуглил два дня. По вашей ссылке ему ответили http://www.mail-archive.com/beginners@perl.org/msg39530.html Сравните с моим кодом... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
marikoda Опубликовано 28 декабря, 2010 · Жалоба попробуйте вместо xinetd использовать netcat У меня уже есть такие же решения под Xinetd, только по TCP. Я считаю, лучше разобраться с данной задачей из соображения незахламления сервера кучами сервисов. Истина где-то рядом... 8) Если истина вдруг не появится, можно вообще написать демона на питоне (чисто из соображений тренировки в кодинге) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 29 декабря, 2010 · Жалоба попробуйте вместо xinetd использовать netcat У меня уже есть такие же решения под Xinetd, только по TCP. Я считаю, лучше разобраться с данной задачей из соображения незахламления сервера кучами сервисов. Истина где-то рядом... 8) Если истина вдруг не появится, можно вообще написать демона на питоне (чисто из соображений тренировки в кодинге) Тогда уже можно накодить на Perl. :)У меня даже где-то рабочий пример был. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 29 декабря, 2010 · Жалоба ищите в гугле "udprelay" Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zep Опубликовано 4 января, 2011 · Жалоба Тогда уже можно накодить на Perl. :)У меня даже где-то рабочий пример был. Если вас не затруднит, не могли бы найти свой пример? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 4 января, 2011 · Жалоба #!/usr/bin/perl use strict; use threads; use IO::Socket; my $pid = fork(); if ($pid == 0) { my $sock = new IO::Socket::INET ( LocalHost => '0.0.0.0', LocalPort => '7070', Proto => 'tcp', Listen => 1, Reuse => 1); die "Could not create socket: $!\n" unless $sock; while (my $client = $sock->accept()) { $client->autoflush(1); my $sockthread = threads->new(\&accept_connection,$client); $sockthread->detach; } sub accept_connection { my $client = $_[0]; print $client ">> "; while (<$client>) { my $message = $_; print "Got command: $message"; open FH, "$message |"; while () { print $client $_; } print $client ">> "; } return; } } Тупенький шелл, и на TCP. Зато многопоточный. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zep Опубликовано 4 января, 2011 · Жалоба ТСР понятно. А вот UDP как?? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 4 января, 2011 · Жалоба ТСР понятно. А вот UDP как?? Я аналогично пробовал с UDP - все так же. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...