шаблон сервера

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

шаблон сервера

Сообщение rom » 16.03.2008 16:59:17

Может кто поделится наработкой?
Я застрял на объединении примеров демона+сервера =(
rom
незнакомец
 
Сообщения: 9
Зарегистрирован: 29.01.2008 21:48:00
Откуда: Санкт-петербург

Сообщение boykov » 17.03.2008 01:51:05

эта... сервера чего?
коли сетевого сервера -- дык
<слушаем на порту>
коли пришел коннекто, то форк себя и начало обмена. По окончании обмера -- ендец. Основной тред не ждет окончания субтреда.

сервера приложений -- там сложее.
boykov
незнакомец
 
Сообщения: 7
Зарегистрирован: 13.02.2008 09:43:55

Сообщение rom » 18.03.2008 11:04:40

Сетевого.
Может тогда так: сначала форкаемся, слушаем, и при получении форкаемся?

Раз уж пошел разговор, как тогда с сервером приложений?
rom
незнакомец
 
Сообщения: 9
Зарегистрирован: 29.01.2008 21:48:00
Откуда: Санкт-петербург

Сообщение Deepthroat » 25.03.2008 01:20:59

Зачем вообще форкаться? Есть, вообще-то, потоки. Основной поток - цикл, который ждет соединений. Появляется соединение, создается поток для соединения, а основной поток вновь переходит к ожиданию.
Аватара пользователя
Deepthroat
постоялец
 
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven

Сообщение Attid » 25.03.2008 12:17:36

а потому что для демона первый форк обязателен =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Bupyc » 25.03.2008 12:53:22

Deepthroat писал(а):... Появляется соединение, создается поток для соединения, а основной поток вновь переходит к ожиданию....


В принципе, это классическая схема работы TCP-шного сервера. Она годится и для unix-подобных операционок и для осей семейства windows.
Однако при таком подходе есть большой подводный камень. В случае серъёзной нагрузки на сервер, количество потоков может быть слишком большим. Сам лично под win2k сталкивался с ситуацией, когда при очередном подключении подвисал вызов TThread.Create. Трассировка кода показала, что висла API функция CreateThread. Плюс ко всему, возможна ситуация, когда необходимо синхронизировать клиентские потоки между собой. Например, когда они используют какие то общие массивы данных. При этом велика вероятность получения ситуации типа deadlock.
Поэтому, при работе в win32 среде, я предпочитаю организовывать сервер с помощью асинхронных сокетов, работающих через оконные сообщения. В этом случае, поток, получающий данные от клиентов и организующий подключения всегда один и нет необходимости следить за потоками и организовывать синхронизацию между ними.
Хотя, конечно, этот механизм не является кроссплатформенным. Что при работе с FPC может быть критичным.
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Re: шаблон сервера

Сообщение Timid » 14.05.2008 08:44:17

2B, нет ли у вас информации, как можно организовать обмен с использованием запроса CONNECT? Я не имею в виду стандартные отговорки "после установки соединения могут обмениваться произвольными данными", а именно примеры с Keep-Alive

Спасибо
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: шаблон сервера

Сообщение *vmr » 14.05.2008 14:58:58

HTTP ?
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

Re: шаблон сервера

Сообщение Timid » 16.05.2008 07:33:20

Именно, например такого: CONNECT /index.cgi /HTTP1.1
Причем со стороны и клиента, и сервера
Желательно, примеры с SSL.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

Рейтинг@Mail.ru