Передача сокета в новый домен приложений - PullRequest
6 голосов
/ 15 августа 2011

Я работаю над переносом приложения клиент / сервер на .NET. Текущая версия C-сервера имеет один исполняемый файл для процесса (службы Windows), который прослушивает соединения с сокетами. Когда слушатель принимает соединение через сокет, он порождает новый процесс для обработки этого соединения. Приложение-обработчик является отдельным исполняемым файлом.

В .NET-версии этого приложения я хотел бы иметь один исполняемый файл / процесс. Слушатель должен создать новый домен AppDomain для каждого соединения (чтобы изолировать «рабочий процесс», назначенный каждому клиенту). Как передать сокет из домена приложения слушателя в рабочий домен приложения?

Спасибо!

1 Ответ

5 голосов
/ 16 августа 2011

Мне кажется, я только что нашел ответ на свой вопрос. Метод DuplicateAndClose можно использовать, даже если я не передаю сокет в отдельный процесс. Слушатель может просто передать свой собственный идентификатор процесса в DuplicateAndClose.

Решение описано здесь: http://blogs.msdn.com/b/malarch/archive/2005/12/14/503884.aspx

Это также работает, если вы хотите передать сокет отдельному процессу.

...