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.


Tags: , ,

Воскресенье, Декабрь 28th, 2008 Статьи

Leave a Reply

Вы должны войти чтобы оставить комментарий.

Cheap Retro Replica NFL NBA MLB Throwback Football Basketball Jerseys | hp printer ink cartridges refills| Jewelry Making Supplies | Thumb Joint Pain | Dog Health Problems |Tinkerbell Personal Checks |Garden Planters