Foros del Web » Programación para mayores de 30 ;) » .NET »

Aplicacion distribuida con System.remoting y tcpchannels

Estas en el tema de Aplicacion distribuida con System.remoting y tcpchannels en el foro de .NET en Foros del Web. Hola, saludos a todos. Estoy creando una aplicación en C# en la que el cliente busca en la red los equipos que están activos y ...
  #1 (permalink)  
Antiguo 20/10/2013, 23:18
Avatar de Lichblitz  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia - Sincelejo
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Aplicacion distribuida con System.remoting y tcpchannels

Hola, saludos a todos.
Estoy creando una aplicación en C# en la que el cliente busca en la red los equipos que están activos y se conecta a los servidores remotos, el cliente les asigna a cada uno un trabajo y recibe la respuesta de cada uno de ellos. El problema que tengo es que cuando creo un canal en remoting utiliza un único puerto y no quiero abrir un puerto por cada equipo conectado, sería demasiado tedioso por la cantidad de equipos que se conectan a la red.

Éste es el código de cada servidor:

Código:
TcpServerChannel channel = new TcpServerChannel(9988);
            ChannelServices.RegisterChannel(channel, false);
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(ImplemetacionInterfaz),
                "ServidorRemoto", WellKnownObjectMode.SingleCall);
En el cliente, se intenta conectar a la lista de equipos conectados que encuentra dinámicamente:

Código:
		foreach (String nombreEquipo in equipos) {
			try {
              
                ChannelServices.RegisterChannel(new TcpClientChannel(),false);
                InterfazServidor resService = (InterfazServidor)Activator.GetObject(
                 typeof(InterfazServidor ),

                 "tcp://" + nombreEquipo + ":[puerto]/ServidorRemoto");

 
                listaDeServidoresActivos.Add(resService);
                
			} catch (Exception e) {
                MessageBox.Show(e.Message);
			}
¿Hay alguna forma de que me pueda conectar a varios servidores que tienen el canal abierto en el mismo puerto? Algo así como el Java RMI que no necesita tener que pasar el puerto en el cliente para conectarse.

Gracias :)
  #2 (permalink)  
Antiguo 21/10/2013, 10:33
Avatar de Lichblitz  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia - Sincelejo
Mensajes: 6
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Aplicacion distribuida con System.remoting y tcpchannels

Woopss, parece que la solución era muy sencilla. Solo hay que abrir varios canales desde el cliente, no tiene nada que ver con el servidor. Bueno aquí está la solución :)

Código:
  nameCode++;
                RemoteChannelProperties["port"] = "998"+(nameCode+7);
                RemoteChannelProperties["name"] = "tcp"+nameCode;
               
                channel = new TcpChannel(RemoteChannelProperties, null, null);
                MessageBox.Show(channel.ChannelName);
                ChannelServices.RegisterChannel(channel,false);
                InterfazPrimo resService = (x)Activator.GetObject(
                 typeof(x), "tcp://" + nombreEquipo + ":9988/x");

Etiquetas: c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:21.