Страница 1 из 1

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

СообщениеДобавлено: 16.03.2008 16:59:17
rom
Может кто поделится наработкой?
Я застрял на объединении примеров демона+сервера =(

СообщениеДобавлено: 17.03.2008 01:51:05
boykov
эта... сервера чего?
коли сетевого сервера -- дык
<слушаем на порту>
коли пришел коннекто, то форк себя и начало обмена. По окончании обмера -- ендец. Основной тред не ждет окончания субтреда.

сервера приложений -- там сложее.

СообщениеДобавлено: 18.03.2008 11:04:40
rom
Сетевого.
Может тогда так: сначала форкаемся, слушаем, и при получении форкаемся?

Раз уж пошел разговор, как тогда с сервером приложений?

СообщениеДобавлено: 25.03.2008 01:20:59
Deepthroat
Зачем вообще форкаться? Есть, вообще-то, потоки. Основной поток - цикл, который ждет соединений. Появляется соединение, создается поток для соединения, а основной поток вновь переходит к ожиданию.

СообщениеДобавлено: 25.03.2008 12:17:36
Attid
а потому что для демона первый форк обязателен =)

СообщениеДобавлено: 25.03.2008 12:53:22
Bupyc
Deepthroat писал(а):... Появляется соединение, создается поток для соединения, а основной поток вновь переходит к ожиданию....


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

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

СообщениеДобавлено: 14.05.2008 08:44:17
Timid
2B, нет ли у вас информации, как можно организовать обмен с использованием запроса CONNECT? Я не имею в виду стандартные отговорки "после установки соединения могут обмениваться произвольными данными", а именно примеры с Keep-Alive

Спасибо

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

СообщениеДобавлено: 14.05.2008 14:58:58
*vmr
HTTP ?

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

СообщениеДобавлено: 16.05.2008 07:33:20
Timid
Именно, например такого: CONNECT /index.cgi /HTTP1.1
Причем со стороны и клиента, и сервера
Желательно, примеры с SSL.