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

Problema Conexion Cliente - Servidor

Estas en el tema de Problema Conexion Cliente - Servidor en el foro de Java en Foros del Web. Saludos Les cuento que estoy probando aplicaciones cliente servidor en java con la clase Socket y es algo simple mi aplicacion no hace nada productivo ...
  #1 (permalink)  
Antiguo 04/05/2011, 13:49
Avatar de 2102325  
Fecha de Ingreso: octubre-2009
Ubicación: Santo Domingo RD
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Problema Conexion Cliente - Servidor

Saludos

Les cuento que estoy probando aplicaciones cliente servidor en java con la clase Socket y es algo simple mi aplicacion no hace nada productivo el servidor lo unico que hece es mostrar un mensaje que dice escuchando en el puerto 5000, y cuando intento conectarme con el cliente me muestra el mensaje ya se conecto el cliente 10.x.x.x, en cambio el cliente luego de que se conecte solo me dira en un mensaje ya esta conectado con el servidor.

MI aplicacion funciona bien de forma local en la misma maquina, pero cuando intento probarlo en maquinas diferentes no me funciona y me dice que se termino el tiempo de conexion al parecer no hay comunicacion entre las aplicaciones.

Aqui el Codigo para ver si me dan una manito

Código C++:
Ver original
  1. Codigo del Servidor
  2.  
  3. import java.io.*;
  4. import java.net.*;
  5. public class Servidor1{
  6.     public static void main(String[] args){
  7.         ServerSocket yo = null;
  8.         Socket cliente = null;
  9.         try{
  10.             yo = new ServerSocket(5000);
  11.         } catch (IOException e){
  12.             System.out.println(e.getMessage());
  13.             System.exit(1);
  14.         }
  15.         System.out.println("Socket escuchando en puerto 5000");
  16.         try{
  17.             cliente = yo.accept();
  18.         } catch (IOException e){
  19.             System.out.println(e.getMessage());
  20.             System.exit(1);
  21.         }
  22.         System.out.println("Ya se conecto el cliente: "+cliente.getInetAddress());
  23.         try{
  24.             cliente.close();
  25.             yo.close();
  26.         } catch (IOException e){
  27.             System.out.println(e.getMessage());
  28.             System.exit(1);
  29.         }
  30.     }
  31. }

Codigo del CLiente

Código C++:
Ver original
  1. import java.io.*;
  2. import java.net.*;
  3. public class Cliente1{
  4.  
  5.     public static void main(String[] args){
  6.         Socket yo = null;
  7.         try {
  8.             InetAddress direccion = InetAddress.getLocalHost();
  9.             yo = new Socket(direccion,5000);
  10.         } catch (UnknownHostException e){
  11.             System.out.println(e.getMessage());
  12.             System.exit(1);
  13.         } catch (IOException e){
  14.             System.out.println(e.getMessage());
  15.             System.exit(1);
  16.         }
  17.         System.out.println("Ya se conecto al Servidor");
  18.        
  19.         try {
  20.             yo.close();
  21.         } catch (IOException e){
  22.             System.out.println(e.getMessage());
  23.             System.exit(1);
  24.         }
  25.     }
  26. }

Hasta Pronto

Espero por sus respuestas...
__________________
Lo QuE SaBeMoS eS UnA gOta dE aGuA, Lo QuE iGnOraMos, eS El OcEaNo...
Saludos desde RD
  #2 (permalink)  
Antiguo 04/05/2011, 17:24
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Problema Conexion Cliente - Servidor

Cuando lo pruebas en distintas máquinas... ¿cómo están conectadas esas máquinas? ¿Misma red? ¿Redes distintas?

Yo he trabajado un poco con sockets en java (y en otro lenguaje) y existen problemas ajenos al código cuando no está en la misma máquina, por lo que requieren soluciones distintas (que nada tienen que ver con el código, son más bien aspectos de transmisión de paquetes por la red).
  #3 (permalink)  
Antiguo 05/05/2011, 05:59
 
Fecha de Ingreso: abril-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 1
Respuesta: Problema Conexion Cliente - Servidor

Bueno, deduzco por tu codigo que estas ejecutando tanto el cliente como el servidor en la misma maquina...

El InetAddress direccion = InetAddress.getLocalHost(); devuelve nombrehost/ip, prueba a ponersela a mano.
  #4 (permalink)  
Antiguo 05/05/2011, 07:30
 
Fecha de Ingreso: junio-2009
Ubicación: cali
Mensajes: 20
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema Conexion Cliente - Servidor

Estoy de acuerdo con _Ruben_ al preguntar por la conexion de las maquinas, si estan conectadas a la misma red, por ejemplo la de un centro comercial o una universidad entonces deberia funcionar. Sin embargo, si intentas hacer la conexion por la red de tu ISP (proveedor de servicios de internet) las maquinas deberian tener una IP publica.

Si no es asi, te recomiendo que averigues como obtener la ip del cliente, y por medio de algun procedimiento en el servidor (de IP publica) hacer la conexion; no se como hacerlo o que nombre reciba, si averiguas lo posteas :P
  #5 (permalink)  
Antiguo 05/05/2011, 07:44
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Problema Conexion Cliente - Servidor

Cita:
Iniciado por migueljimenezz Ver Mensaje
Estoy de acuerdo con _Ruben_ al preguntar por la conexion de las maquinas, si estan conectadas a la misma red, por ejemplo la de un centro comercial o una universidad entonces deberia funcionar. Sin embargo, si intentas hacer la conexion por la red de tu ISP (proveedor de servicios de internet) las maquinas deberian tener una IP publica.

Si no es asi, te recomiendo que averigues como obtener la ip del cliente, y por medio de algun procedimiento en el servidor (de IP publica) hacer la conexion; no se como hacerlo o que nombre reciba, si averiguas lo posteas :P
Exacto, hay 3 posibles casos:
-Misma máquina: No hay problemas, y si los hay es de código.
-Distintas máquinas pero misma red: Debe indicarse la IP privada.
-Distintas máquinas y distinta red: Debe indicarse la IP pública, y si hay varias máquinas con esa IP pública hay que configurar el router.
  #6 (permalink)  
Antiguo 05/05/2011, 13:17
Avatar de 2102325  
Fecha de Ingreso: octubre-2009
Ubicación: Santo Domingo RD
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Problema Conexion Cliente - Servidor

Cita:
Iniciado por _Ruben_ Ver Mensaje
Cuando lo pruebas en distintas máquinas... ¿cómo están conectadas esas máquinas? ¿Misma red? ¿Redes distintas?

Yo he trabajado un poco con sockets en java (y en otro lenguaje) y existen problemas ajenos al código cuando no está en la misma máquina, por lo que requieren soluciones distintas (que nada tienen que ver con el código, son más bien aspectos de transmisión de paquetes por la red).
Saludos Gracias por tu Respuesta

Te cuento que la he probado de dos maneras diferentes primero intente probarlo en mi oficina en una de las maquinas de mi compañeros, aqui todas las maquinas estan en red incluso comparten recursos y comprobe que hay comunicacion entre ellas.

Segundo lo intente probar atraves de la web le envie el servido a un amigo le dije que lo ejecute que me facilite el ip para configurarlo a mi cliente y listo tampoco funciono.

Hasta Pronto
__________________
Lo QuE SaBeMoS eS UnA gOta dE aGuA, Lo QuE iGnOraMos, eS El OcEaNo...
Saludos desde RD
  #7 (permalink)  
Antiguo 05/05/2011, 13:19
Avatar de 2102325  
Fecha de Ingreso: octubre-2009
Ubicación: Santo Domingo RD
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Problema Conexion Cliente - Servidor

Saludos

Ya lo intente como dices estaba configurado manual, solo hice ese cambio para cuando lo ejecute en otra maquina no tener que estar configurando el ip nuevamente, sino que me lo asigne de lo que me devuelve el metodo...

Hasta PRONTO
__________________
Lo QuE SaBeMoS eS UnA gOta dE aGuA, Lo QuE iGnOraMos, eS El OcEaNo...
Saludos desde RD
  #8 (permalink)  
Antiguo 05/05/2011, 13:39
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Problema Conexion Cliente - Servidor

Cita:
Iniciado por 2102325 Ver Mensaje
Saludos Gracias por tu Respuesta

Te cuento que la he probado de dos maneras diferentes primero intente probarlo en mi oficina en una de las maquinas de mi compañeros, aqui todas las maquinas estan en red incluso comparten recursos y comprobe que hay comunicacion entre ellas.

Segundo lo intente probar atraves de la web le envie el servido a un amigo le dije que lo ejecute que me facilite el ip para configurarlo a mi cliente y listo tampoco funciono.

Hasta Pronto
Entonces creo que se cual es el problema. Repasemos un poco la teoría:
-Cuando se ejecuta el servidor se queda a la espera escuchando en un puerto.
-La máquina que se ejecuta si está conectada al mismo router que otras máquinas todas tienen la misma IP pública.
-Cuando se ejecuta el cliente intenta conectar con la IP pública, llega hasta el router donde está conectado la máquina que ejecuta el servidor (y otras máquinas más de la red). PROBLEMA: ¿A que máquina le entrega la petición el router? La petición nunca llega al servidor y el cliente nunca consigue conectar.

Una vez que se sabe el motivo pasamos a darle solución:
-Hay que acceder a la configuración del router (cada router es distinto por lo que tiene cada opción en un sitio diferente, pero todos tienen la mismas opciones, busca un manual de como hacer esto para tu router).
-Hay que buscar entre las opciones del router una que se llame "port forwarding". En el se asocia un puerto con una dirección MAC (o IP privada, no recuerdo muy bien). ¿Para que sirve esto? Para que cuando llegue una petición al router al puerto indicado se envíe a la máquina que tiene el servidor.
-En el caso de que solo exista una máquina conectada al router creo que no es necesario porque como solo hay una máquina automáticamente debería enviarle la petición desde el router.


Si la solución correcta es la que planteo ahí, creo que este tema debería moverse al foro de redes, ya que sería una cuestión pura de redes y no de programación.

Etiquetas: cliente, conexion, servidor
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 01:34.