xinetd для сетевой службы на perl
Вообще говоря в статье про tcp сервер на perl мы занимались изобретением велосипеда. Потому что все уже сделано за нас и мы могли спокойно сосредоточиться на логике приложения, не думаю о fork(), сокетах и т.п.
Напишам небольшую сетевую службу, которая будет принимать сообщение от пользователя и отвечать на него принятой строкой. Если в строчке, полученной от пользователя будет только одна точка, то службы завершит свою работу.
#!/usr/bin/perl -w
use strict;
$| = 1;
while( my $line = )
{
$line =~ s/\r?\n$//;
if ($line =~ /^\.$/)
{
die "shutting down\n";
}
print "You send to me: $line\n";
}
Из интересного здесь $| = 1 , эта специальная переменная, которая управляет сбросом буферов вывода на диск. Если она установлена в 0, то интерактивной работы у нас не получится.
Теперь нужно настроить xinetd. Я не стал с ним разбираться, взял настройки от ftp. Создаем файл /etc/xinet.d/my-service
service my-server
{
disable = no
flags = REUSE
socket_type = stream
instances = 5
wait = no
user = root
server = /root/my-service.pl
}
Далее прописываем в /etc/services строчку:
my-server 3333/tcp
Дальше достаточно перезапустить xinetd.
|
|
Leave a Reply
Вы должны войти чтобы оставить комментарий.