Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con sonexión entre sockets

Estas en el tema de Problema con sonexión entre sockets en el foro de C/C++ en Foros del Web. Hola a todos, he creado una aplicación usando sockets. Si le pongo la IP 127.0.0.1 y ejecuto tanto el cliente como el servidor en mi ...
  #1 (permalink)  
Antiguo 04/02/2010, 16:10
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema con sonexión entre sockets

Hola a todos,

he creado una aplicación usando sockets. Si le pongo la IP 127.0.0.1 y ejecuto tanto el cliente como el servidor en mi pc todo funciona muy bien. En cambio si le pongo mi IP de internet ya no me funciona. La dirección IP que le pongo es correcta. He probado también creando una cuenta NO-IP y luego obteniendo la direccion usando gethostbyname("..."); y he comprobado que la dirección que obtiene es la correcta, pero tampoco se conecta.

Alguien sabe qué es lo que estoy haciendo mal??
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 05/02/2010, 03:01
 
Fecha de Ingreso: enero-2010
Mensajes: 24
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con sonexión entre sockets

Da mas informacion del problema:

- Que sistema operativo estas usando?

- La maquina servidor y cliente que estas usando se ven?

- El puerto que estas usando a la hora de crear el socket esta abierto?

- Que te devuelve el programa cuando lo ejecutas?

- Que te devuelve la ejecucion de "ping ip_server" y "telnet ip_server port_server"?
  #3 (permalink)  
Antiguo 05/02/2010, 10:23
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Problema con sonexión entre sockets

Buenas,

Has abierto el puerto en el router?

Para que haya conexión necesitas poder llegar hasta el ordenador:
Cliente <-> Internet <-> ( Router <-> Servidor )

Los paréntesis indican una red LAN (es decir, una red privada desde la que no se tiene acceso desde internet)

La IP a la que debes llamar es la IP del router (la IP pública). Cuando la petición de conexión llega al router, éste, tiene que saber que hacer:
- Si no tiene ninguna regla, desestima la petición (la cancela)
- Si tiene una regla, la aplica

Las reglas suelen ser de este tipo (de forma lógica):
Si recibes una petición en le puerto P, la reenvías a la IP de la LAN I y al puerto X

Crear reglas de este estilo es lo que se conoce como "abrir puertos" en un ruter.

Luego, el servidor I tiene que tener un programa (imagino, el que estas haciendo) abierto en el puerto X para aceptar la conexión.

Más información:
- NAT (Concretamente, DNAT)
- Abrir puertos (Busca un tutorial para tu router si no sabes hacerlo)

P.D.: Cuando dices que pones tu IP externa, espero que no estés probando de llamar a tu programa con la IP externa de tu router estando tú dentro de la red LAN (eso es una tontería y los routers no saben como redireccionar estas peticiones)... Como mucho, prueba a poner la IP de tu ordenador (no solo la IP de localhost), pon ifconfig en linux o ipconfig en windows para saberla

Carlos

Etiquetas: sockets
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 09:18.