Java - Conexión a través de internet

 
Vista:

Conexión a través de internet

Publicado por Pepe García (15 intervenciones) el 01/02/2010 17:39:52
Buenas a todos.

Tengo una duda existencial. Estoy haciendo un programa que conecta por sockets un programa de videoconferencia, el cual funciona por invitaciones.
Es decir, si yo quiero hacer video conferencia contigo necesito invitarte primero. Las invitaciones se hacen por sockets de JAVA; y se realizan mediante IP. Lo explico:

Los dos usuarios, A y B, se conectan a un servidor el cual almacena sus IP's. Si A quiere invitar a B, se conecta al server, recoge la IP de B y envía la invitación por socket a la IP de B por el puerto 35555. Hasta ahí, funciona de maravilla.
El problema me viene cuando dos o mas máquinas comparten IP, es decir, dos máuinas en la red local con la misma IP pública.

Si yo, como A, envío una invitación al usuario B, funciona sin problemas siempre y cuando no haya un tercer usuario en la misma red local que B, compartiendo su IP pública.

Esquematizando:

Tres usuarios: A,B y C.
B y C tienen la misma IP: 123.123.123.133 (son ordenadores en la misma red local).


A invita a B a una videoconferencia, lo hace a la IP 123.123.123.133 por el puerto 35555.

¿Como puedo hacer que el socket enviado desde A sepa que tiene que ir a B y no a C?. Es decir, B y C escuchan en el mismo puerto.
Puedo, desde luego, configurar el NAT del router para que sepa que el puerto 35555 va a la IP interna de B o de C, pero si luego quiero hacer videoconferencia con C o con B indistintamente, tendré que cambiarlo de nuevo en el router.

¿Alguna idea?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder