Russian Qt Forum

Qt => Работа с сетью => Тема начата: MEFISTO от Декабрь 09, 2013, 13:00



Название: многопроцессный сервер
Отправлено: MEFISTO от Декабрь 09, 2013, 13:00
надо написать сервер, который бы на каждого клиента выделял отдельный процесс. система Win XP.
с процессами еще не работал поэтому сразу есть ряд, возможно, глупых вопросов:
1) можно ли сделать сервер с одним .exe файлом или надо как минимум два для самого сервера и процесса?
2) как передать в процесс сокет (в потоке достаточно было передать socketDescriptor)
3) как вызывать (завершать) процесс чтобы высвобождалась память после его завершения?


Название: Re: многопроцессный сервер
Отправлено: Fregloin от Декабрь 09, 2013, 19:50
задача немного странная.
По поводу сокета, насколько я знаю, сокеты живут в пространстве процесса, поэтому созданный и открытый сокет передать в другой процесс скорее всего маловероятно.


Название: Re: многопроцессный сервер
Отправлено: Johnik от Декабрь 10, 2013, 07:17
1. можно
2. пример можно посмотреть в QtSolutions/qtsingleapplication
3. завершился процесс, ос освободила память


Название: Re: многопроцессный сервер
Отправлено: fedya_1981 от Декабрь 10, 2013, 11:32
задача немного странная.
По поводу сокета, насколько я знаю, сокеты живут в пространстве процесса, поэтому созданный и открытый сокет передать в другой процесс скорее всего маловероятно.

можно, например под Windows можно воспользоваться WSADuplicateSocket


Название: Re: многопроцессный сервер
Отправлено: Fregloin от Декабрь 10, 2013, 11:39
Хорошо, а под линами как это сделать? Допустим есть сервер висит на listen/accept, как передать созданный клиентский сокет в другой процесс?


Название: Re: многопроцессный сервер
Отправлено: fedya_1981 от Декабрь 10, 2013, 11:51
Хорошо, а под линами как это сделать? Допустим есть сервер висит на listen/accept, как передать созданный клиентский сокет в другой процесс?

http://search.cpan.org/src/SAMPO/Socket-PassAccessRights-0.03/passfd.c


Название: Re: многопроцессный сервер
Отправлено: fedya_1981 от Декабрь 10, 2013, 11:56
Хорошо, а под линами как это сделать? Допустим есть сервер висит на listen/accept, как передать созданный клиентский сокет в другой процесс?

Попробуй в гугле поищи по "passes a socket between process"


Название: Re: многопроцессный сервер
Отправлено: MEFISTO от Декабрь 10, 2013, 13:56
а можно ли слушать один и тот же порт разными процессами? т.е в каждом процессе запускается сервер и работает только с тем клиентом для которого был создан.
Или для каждого сервера  придется выделить свой порт?