Russian Qt Forum
Май 03, 2024, 17:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: многопроцессный сервер  (Прочитано 4589 раз)
MEFISTO
Гость
« : Декабрь 09, 2013, 13:00 »

надо написать сервер, который бы на каждого клиента выделял отдельный процесс. система Win XP.
с процессами еще не работал поэтому сразу есть ряд, возможно, глупых вопросов:
1) можно ли сделать сервер с одним .exe файлом или надо как минимум два для самого сервера и процесса?
2) как передать в процесс сокет (в потоке достаточно было передать socketDescriptor)
3) как вызывать (завершать) процесс чтобы высвобождалась память после его завершения?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #1 : Декабрь 09, 2013, 19:50 »

задача немного странная.
По поводу сокета, насколько я знаю, сокеты живут в пространстве процесса, поэтому созданный и открытый сокет передать в другой процесс скорее всего маловероятно.
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #2 : Декабрь 10, 2013, 07:17 »

1. можно
2. пример можно посмотреть в QtSolutions/qtsingleapplication
3. завершился процесс, ос освободила память
Записан
fedya_1981
Гость
« Ответ #3 : Декабрь 10, 2013, 11:32 »

задача немного странная.
По поводу сокета, насколько я знаю, сокеты живут в пространстве процесса, поэтому созданный и открытый сокет передать в другой процесс скорее всего маловероятно.

можно, например под Windows можно воспользоваться WSADuplicateSocket
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #4 : Декабрь 10, 2013, 11:39 »

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

Хорошо, а под линами как это сделать? Допустим есть сервер висит на listen/accept, как передать созданный клиентский сокет в другой процесс?

http://search.cpan.org/src/SAMPO/Socket-PassAccessRights-0.03/passfd.c
Записан
fedya_1981
Гость
« Ответ #6 : Декабрь 10, 2013, 11:56 »

Хорошо, а под линами как это сделать? Допустим есть сервер висит на listen/accept, как передать созданный клиентский сокет в другой процесс?

Попробуй в гугле поищи по "passes a socket between process"
Записан
MEFISTO
Гость
« Ответ #7 : Декабрь 10, 2013, 13:56 »

а можно ли слушать один и тот же порт разными процессами? т.е в каждом процессе запускается сервер и работает только с тем клиентом для которого был создан.
Или для каждого сервера  придется выделить свой порт?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.