Sockets. MultiProceso

02/04/2005 - 14:44 por Alamo | Informe spam
Buenos días a todos.

Tengo una duda de implementación a ver si me podeis ayudar.

He desarrollado con .NET Visual Basic, dos aplicaciones una cliente y otra
servidora mediante el uso de sockets.

En la aplicación servidora, he creado una clase Servidor la cual es la que
se encarga de realizar todo el proceso de escucha y atención de mensajes por
parte de un cliente, todo de forma concurrente (Con suprocesos a la hora de
atender un mensaje)de forma que el servidor desde que recibe un mensaje,
este crea un subproceso para tramitar dichos mensajes, y continuar a la
escucha por mas mensajes.

La idea ahora es hacer que la aplicación servidora sea capaz de escuchar por
mas de un puerto de forma que creando multiples instancias del objeto
Servidor pueda a través del lanzamiento de subprocesos, tener tantos objetos
servidor como clientes se vayan a conectar, es decir, tantos subprocesos
servidor como clientes se quieran conectar.

En base a esta idea me surgen las siguientes dudas:

1) Como puedo hacer para que por código se cree de forma automática tantas
instancias de clase Servidor como puertos a la escucha necesite, sin
necesidad de tener que tocar código cada vez que quiera un nuevo objeto
servidor a la escucha.
2) Como puedo sincronizar los subprocesos servidor de forma que muestren en
pantalla todos los mensajes que van llegando.

He realizado pruebas de conexión de varios clientes al servidor utilizando
un único puerto, y el servidor de forma automática una vez establece la
conexión con el cliente, establece un puerto de conexión para cada cliente
diferente al puerto de escucha. Esto lo he comprobado con el comando netstat
en el servidor, con esto lo que quiero decir, es que la idea de que el
servidor siempre tenga el puerto de escucha libre para atender peticiones
¿ya se consigue de forma automática por la propia filosofía de
funcionamiento de los sockets?. Quizas mi problema sea que aún no entiendo
bien el funcionamiento de los sockets.

Por cierto he utilizado tcp orientado a la conexión.

Bueno espero haberme explicado,

Saludos,

Álamo.
 

Leer las respuestas

#1 Jportelas
04/04/2005 - 18:41 | Informe spam
Hola Alamo:

yo ya he realizado una app como esta de la cual te puede servir lo siguiente:

1. Leer de alguna fuente (archivo de configuracion, registro o DB) una lista
de "servidores" que van a atender por los diferentes puertos, despues de
leerla levanto un hilo donde reside el proceso de escucha (listen del socket
ciclico) de cada "servidor" dinamicamente.

2. Los "servidores" pueden exponer por propiedades publicas los datos de
mensajes, bytes o usuarios conectados, asi mismo puede levantar eventos
cuando llega un mensaje y estos eventos se pueden atrapar en diferentes capas
de la aplicacion.

Sobre lo ultimo, si, un servidor escucha por un puerto y despues de aceptar
un socket entrante lo redirecciona a un nuevo puerto, esto lo hace la
implementacion de la clase socket por debajo.

Suerte pues.

Jairo P.

"Alamo" wrote:

Buenos días a todos.

Tengo una duda de implementación a ver si me podeis ayudar.

He desarrollado con .NET Visual Basic, dos aplicaciones una cliente y otra
servidora mediante el uso de sockets.

En la aplicación servidora, he creado una clase Servidor la cual es la que
se encarga de realizar todo el proceso de escucha y atención de mensajes por
parte de un cliente, todo de forma concurrente (Con suprocesos a la hora de
atender un mensaje)de forma que el servidor desde que recibe un mensaje,
este crea un subproceso para tramitar dichos mensajes, y continuar a la
escucha por mas mensajes.

La idea ahora es hacer que la aplicación servidora sea capaz de escuchar por
mas de un puerto de forma que creando multiples instancias del objeto
Servidor pueda a través del lanzamiento de subprocesos, tener tantos objetos
servidor como clientes se vayan a conectar, es decir, tantos subprocesos
servidor como clientes se quieran conectar.

En base a esta idea me surgen las siguientes dudas:

1) Como puedo hacer para que por código se cree de forma automática tantas
instancias de clase Servidor como puertos a la escucha necesite, sin
necesidad de tener que tocar código cada vez que quiera un nuevo objeto
servidor a la escucha.
2) Como puedo sincronizar los subprocesos servidor de forma que muestren en
pantalla todos los mensajes que van llegando.

He realizado pruebas de conexión de varios clientes al servidor utilizando
un único puerto, y el servidor de forma automática una vez establece la
conexión con el cliente, establece un puerto de conexión para cada cliente
diferente al puerto de escucha. Esto lo he comprobado con el comando netstat
en el servidor, con esto lo que quiero decir, es que la idea de que el
servidor siempre tenga el puerto de escucha libre para atender peticiones
¿ya se consigue de forma automática por la propia filosofía de
funcionamiento de los sockets?. Quizas mi problema sea que aún no entiendo
bien el funcionamiento de los sockets.

Por cierto he utilizado tcp orientado a la conexión.

Bueno espero haberme explicado,

Saludos,

Álamo.



Preguntas similares