2011-08-15 27 views
5

Estoy trabajando para portar una aplicación de cliente/servidor a .NET. La versión C actual del servidor tiene un ejecutable para un proceso (un servicio de Windows) que escucha las conexiones de socket. Cuando el oyente acepta una conexión de socket, genera un nuevo proceso para manejar esa conexión. La aplicación de controlador es un ejecutable por separado.Pasando un socket a un nuevo dominio de aplicación

En la versión .NET de esta aplicación, me gustaría tener un ejecutable/proceso. El oyente debe crear un nuevo dominio de aplicación para cada conexión (para aislar el "proceso de trabajo" asignado a cada cliente). ¿Cómo debo pasar el socket del dominio de la aplicación de escucha al dominio de la aplicación de trabajador?

Gracias!

+0

Dependiendo del aislamiento, es posible que pueda utilizar GetData y SetData en los dominios respectivos, pero es posible que tenga que ordenar el desplazamiento de los objetos. ¿Ya has probado algo? –

+0

Creo que acabo de encontrar la respuesta a mi propia pregunta. El método DuplicateAndClose se puede usar aunque no pase el socket a un proceso separado. El oyente puede simplemente pasar su propio ID de proceso. [link] (http://blogs.msdn.com/b/malarch/archive/2005/12/14/503884.aspx) –

+0

Genial, espero que funcione correctamente; si lo hace, entonces debe responder su propia pregunta y aceptarla. –

Respuesta

4

Creo que acabo de encontrar la respuesta a mi propia pregunta. El método DuplicateAndClose se puede usar aunque no pase el socket a un proceso separado. El oyente puede simplemente pasar su propio ID de proceso a DuplicateAndClose.

La solución se describe aquí: http://blogs.msdn.com/b/malarch/archive/2005/12/14/503884.aspx

Esto también funciona si desea pasar la toma apagado a un proceso separado.

Cuestiones relacionadas