The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"запуск сервера через inetd"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"запуск сервера через inetd"  
Сообщение от aborilov email(??) on 15-Фев-06, 16:04 
привет!
написал простой tcp-сервер на perl, который вешается на порт и принимает подключения...
хочу что бы он не висел как демон а только запускался при когда ето надо, и если приходит другое подключение то запускалась его копия, короче через inetd.
прописал в inetd.conf, в  service, все ОК! но когда пытаюсь подключиться, сервак то пытается повеситься на порт, а там уже слушает inetd
что делать? может не надо вешать сервак на порт? а от куда тогда брать данные от клиента?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "запуск сервера через inetd"  
Сообщение от Wulf on 15-Фев-06, 16:30 
>привет!
>написал простой tcp-сервер на perl, который вешается на порт и принимает подключения...
>
>хочу что бы он не висел как демон а только запускался при
>когда ето надо, и если приходит другое подключение то запускалась его
>копия, короче через inetd.
>прописал в inetd.conf, в  service, все ОК! но когда пытаюсь подключиться,
>сервак то пытается повеситься на порт, а там уже слушает inetd
>
>что делать? может не надо вешать сервак на порт? а от куда
>тогда брать данные от клиента?

через inetd не надо слушать порт. Там надо делать 2 вещи:
1. при необходимости, отключить буферизацию у stdout.
2. читать и писать в stdin/stdout соответственно.
И не надо создавать сокетов и т.д. и т.п.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "запуск сервера через inetd"  
Сообщение от aborilov email(??) on 15-Фев-06, 16:38 
>>привет!
>>написал простой tcp-сервер на perl, который вешается на порт и принимает подключения...
>>
>>хочу что бы он не висел как демон а только запускался при
>>когда ето надо, и если приходит другое подключение то запускалась его
>>копия, короче через inetd.
>>прописал в inetd.conf, в  service, все ОК! но когда пытаюсь подключиться,
>>сервак то пытается повеситься на порт, а там уже слушает inetd
>>
>>что делать? может не надо вешать сервак на порт? а от куда
>>тогда брать данные от клиента?
>
>через inetd не надо слушать порт. Там надо делать 2 вещи:
>1. при необходимости, отключить буферизацию у stdout.
>2. читать и писать в stdin/stdout соответственно.
>И не надо создавать сокетов и т.д. и т.п.


каким образомотключить буферизацию?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "запуск сервера через inetd"  
Сообщение от Wulf on 15-Фев-06, 16:46 

>
>каким образомотключить буферизацию?

как обычно:
select(( select, $| = 1 )[0] );
иначе, интерактивность будет не очень.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "запуск сервера через inetd"  
Сообщение от aborilov email(??) on 15-Фев-06, 16:56 

>
>как обычно:
>select(( select, $| = 1 )[0] );
> иначе, интерактивность будет не очень.

и еще вопросик:
а если мне надо принимать данные построчно, то как лучше делать?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "запуск сервера через inetd"  
Сообщение от Wulf on 15-Фев-06, 17:41 

>и еще вопросик:
>а если мне надо принимать данные построчно, то как лучше делать?

если у тебя программы собираются общаться строка - 1-й комп, строка - 2-й комп и т.д. по кругу, то буферизацию надо отключать.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "запуск сервера через inetd"  
Сообщение от aborilov email(??) on 16-Фев-06, 12:04 
все ясно! разобрался! спасибо!

а как узнать ip с котрого пришел коннект?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "запуск сервера через inetd"  
Сообщение от aborilov email(??) on 16-Фев-06, 12:44 
ОК! с ip все понятно!
я получаю строку вот так -
$line = <STDIN>;

как мне ограничить ограничить эту строку? т.е. получать только первые 20 символов! что бы не было переполнения

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "запуск сервера через inetd"  
Сообщение от chip email(ok) on 16-Фев-06, 14:37 
>ОК! с ip все понятно!
>я получаю строку вот так -
>$line = <STDIN>;
>
>как мне ограничить ограничить эту строку? т.е. получать только первые 20 символов!
>что бы не было переполнения

Слышал звон, да не знаю где он. Какого переполнения? В данном случае не возникнет никакого переполнения.

Для чтения 20 символов используйте:
perldoc -f sysread

ps: и настоятельно рекомендую начать с perldoc perlintro

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "запуск сервера через inetd"  
Сообщение от DeadMustdie email(??) on 16-Фев-06, 20:33 
>что делать? может не надо вешать сервак на порт? а от куда
>тогда брать данные от клиента?

Не надо вешать. Данные брать с stdin, отправлять на stdout. Остальное - забота inetd.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "запуск сервера через inetd"  
Сообщение от aborilov email(??) on 16-Фев-06, 21:33 
И вроде последний вопрос:
клиент приконекчивается, я жду от него строку
sysread(STDIN,128);

но так ждать я могу без конечно!
как сделать что бы сервак через определенное время отваливался?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "запуск сервера через inetd"  
Сообщение от rWizard email(ok) on 19-Фев-06, 18:15 
perldoc -f alarm
(пример в самом конце, из него всё понятно)
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

12. "запуск сервера через inetd"  
Сообщение от aborilov email(??) on 20-Фев-06, 21:57 
>perldoc -f alarm
>(пример в самом конце, из него всё понятно)


Большое спасибо!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру