Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Perl

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 02.12.2003, 12:55
bars.spb вне форума Посмотреть профиль Отправить личное сообщение для bars.spb Найти все сообщения от bars.spb
  № 1  
bars.spb

Регистрация: Dec 2003
Сообщений: 4
По умолчанию IO::socket

Кто-нить мог бы объяснить, как в приложении на perl постоянно сканировать порт на множественные подключения и обрабатывать их независимо (в т.ч. без использования $sock->accept())
Если вдруг непонятно изъяснился, то конкретизирую - требуется написать демона чата на перле... С устойчивым соединением с сервером. Как при этом использовать IO::socket (или другие какие модули)

Старый 02.12.2003, 12:56
bars.spb вне форума Посмотреть профиль Отправить личное сообщение для bars.spb Найти все сообщения от bars.spb
  № 2  
bars.spb

Регистрация: Dec 2003
Сообщений: 4
в смысле, "... с устойчивым соединением КЛИЕНТА с демоном[сервером]" :-)

Старый 02.12.2003, 13:47
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 3  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
Лучше делать ответвление процесса для каждого клиента, как-то так:
$server = IO::Socket::INET->new(Proto=>"tcp",LocalPort=>3000,Type=>SOCK_STREAM,Reuse=>1,Listen=>10);
while (1) {
while ($client = $server->accept()) {
if (fork) {
close($client);
} else {
close($server);
... - общаемся с $client в отдельном процессе.
}
}
}
__________________
Two beer or not two beer?...

Старый 02.12.2003, 17:31
bars.spb вне форума Посмотреть профиль Отправить личное сообщение для bars.spb Найти все сообщения от bars.spb
  № 4  
bars.spb

Регистрация: Dec 2003
Сообщений: 4
SPV, ммм... боюсь, при открытых для каждого клиента копиях процесса, серер окажется нагруженным и админы не скажут спасибо...

Т.е., в одном приложении это все же сделать проблематично?

Старый 02.12.2003, 17:47
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 5  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
Без $sock->accept() точно не обойтись
Можно попробовать разойтись процессу только на два. Первая часть будет ждать коннектов:
while ($client = $server->accept())
И в случае подключения передавать $client второй части.
А вторая часть будет постоянно в цикле бегать по всем активным клиентам (которых ей передает первая часть) и обслуживать их...
__________________
Two beer or not two beer?...

Старый 02.12.2003, 18:03
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 6  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
А можно и вообще без раздвояйца обойтись, если использовать IO::Select - это позволит не останавливаться на ожидании каждого нового подключения, а проверять без задержки - есть ли новые желающие подключиться или нет...
__________________
Two beer or not two beer?...

Старый 04.12.2003, 12:20
bars.spb вне форума Посмотреть профиль Отправить личное сообщение для bars.spb Найти все сообщения от bars.spb
  № 7  
bars.spb

Регистрация: Dec 2003
Сообщений: 4
Cпасибо за мысли :-)
большое

Создать новую тему   Часовой пояс GMT +4, время: 02:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.