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

[Dudas] Sockets: Servidor online, Cliente local

Estas en el tema de [Dudas] Sockets: Servidor online, Cliente local en el foro de Java en Foros del Web. ¡¡Buenas!! Hoy vengo con otra duda, pero de temas un poquito más complejos... sockets . Vamos con la intro para poder explicar después mi problema. ...
  #1 (permalink)  
Antiguo 16/12/2011, 15:40
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Exclamación [Dudas] Sockets: Servidor online, Cliente local

¡¡Buenas!! Hoy vengo con otra duda, pero de temas un poquito más complejos...sockets.


Vamos con la intro para poder explicar después mi problema.

Yo tengo unos programas hechos en java (Servidor y Clientes) andando en mi PC y andan a nivel "red de área local, LAN". (Para que se entienda vamos a visualizar imaginariamente un "Chat". Como dije, en mi PC y en LAN (o Hamachi) andan de 10 pero lo que quiero hacer es que anden a través de internet.


Los clientes para funcionar deben "localizar" al servidor poniendo el IP, (por ejemplo 192.168.1.104 en una red LAN). Para que funcione en internet pienso que debería poner el "SocketServidor.java" en algún host...acá es dónde surgen mis dudas:

1) ¿Puedo hacer andar el "SocketServidor.java" así como lo tengo funcionando en mi PC directamente en un host?

2) Capaz no se pueda subir un .java y ejecutarlo en el host, entonces...¿Puedo hacer el socket servidor en PHP u otro lenguaje, y conectarlo con el "SocketCliente.java"? ¿Cuál sería la manera más sencilla de hacerlo?

Bueno por ahora esas dudas; a medida que surjan más las iré preguntando. ¡¡Gracias!!
  #2 (permalink)  
Antiguo 16/12/2011, 15:47
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Cita:
Iniciado por Artificioo Ver Mensaje

1) ¿Puedo hacer andar el "SocketServidor.java" así como lo tengo funcionando en mi PC directamente en un host?
Por poder, puedes incluso usar tu propio pc de host, haciendo que tu cliente(que tambien puede estar en tu pc) en vez de ir por lan, salga a internet y vuelva a entrar.

La forma mas facil de probar si funciona es abrir el puerto por el que haces la conexion(Yo no lo abri y pense que ya no sabia programar) y meterle tu ip de internet http://www.cualesmiip.com.

Otra cosa que yo hago mas que nada por la comodidad, es usar el programa que te deja la web http://www.no-ip.com que te redireciona un dominio a tu ip, es decir, que cada vez que uses ese dominio(ej: midominio.sytes.net) es como si estubieses dando tu ip, y en caso de tener ip dinamica te ahorras tener que cambiarla en tu programa cada vez que reinicies el router.

Espero que te sirva


Edito: no me deja todavia postear enlaces :(
  #3 (permalink)  
Antiguo 16/12/2011, 15:53
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Que velocidad para responder!! Gracias!! Es muy buena tu idea de tener el servidor en mi propia máquina, el problema es que yo tengo un router y varias máquinas conectadas ahí (todas tienen la misma IP Pública que es la que te da esa url que me pasaste vos) entonces ya no se puede.

Supongamos que vos estás en tu máquina con el cliente, ponés la IP Pública mía. Cuando tu "llamada" llegue a mi router, él no va a saber con cuál de todas las máquinas te querés conectar vos, y se clava :P

Por eso la idea es que se pueda crear el servidor en internet...

Aunque no se si esto anda: En vez de poner solo la IP Pública (200.152.512.6 por ejemplo), sumarle la IP Privada que el router le da a cada máquina y poner 200.152.512.6/IPPrivadaServidor
  #4 (permalink)  
Antiguo 17/12/2011, 05:01
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

No se si probaste a usar el programa de no-ip, pero creo que el ya se encarga de redireccionarte a un pc en concreto, lo de sumarle la ip privada no se si funciona
  #5 (permalink)  
Antiguo 17/12/2011, 08:47
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Cita:
Iniciado por zeus1200 Ver Mensaje
No se si probaste a usar el programa de no-ip, pero creo que el ya se encarga de redireccionarte a un pc en concreto, lo de sumarle la ip privada no se si funciona
Gracias por tu respuesta! Conozco el programa no-ip; pero cada usuario que quiera crear una partida debería tenerlo... Yo quiero que los usuario puedan usar el programa con el menor esfuerzo posible.

Y probé lo de la IP pública + la IP privada; y como esperaba...no funcionó :P
  #6 (permalink)  
Antiguo 17/12/2011, 10:02
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Hola:

Tus clientes pueden usar la IP pública de tu router. Lo que pasa es que tienes que configurar el router para que toda petición que le hagan a un determinado puerto (el de tu socket) lo redirija a la IP interna de tu PC. Cualquier router lo permite, creo que se llama "port fordwarding".

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 17/12/2011, 10:56
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Tus clientes pueden usar la IP pública de tu router. Lo que pasa es que tienes que configurar el router para que toda petición que le hagan a un determinado puerto (el de tu socket) lo redirija a la IP interna de tu PC. Cualquier router lo permite, creo que se llama "port fordwarding".

Se bueno.
Gracias por responder! Perfecto, sería una buena opción si yo siempre fuera el servidor, configuro el router y listo; lo entiendo bien. El tema es si quiero q cualquier persona pueda ser servidor en cualquier parte del mundo. Por eso pensé en un servidor en Internet como posible solución
  #8 (permalink)  
Antiguo 17/12/2011, 11:31
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

En un servidor en internet normalmente no podrás abrir un socket, salvo que tú seas el administrador o el administrador te habilite los persmisos necesarios.

En un servidor en internet (un hots normal) está abierto el puerto 80 para que publiques tus páginas web y hay un servidor apache atendiendo a ese puerto.

Y si pones un servidor en internet, tampoco cumples el objetivo que dices de "cualquier persona pueda ser servidor en cualquier parte del mundo", el servidor será el de internet, no el de la persona.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 17/12/2011, 11:38
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Cita:
Iniciado por chuidiang Ver Mensaje
En un servidor en internet normalmente no podrás abrir un socket, salvo que tú seas el administrador o el administrador te habilite los persmisos necesarios.

En un servidor en internet (un hots normal) está abierto el puerto 80 para que publiques tus páginas web y hay un servidor apache atendiendo a ese puerto.

Y si pones un servidor en internet, tampoco cumples el objetivo que dices de "cualquier persona pueda ser servidor en cualquier parte del mundo", el servidor será el de internet, no el de la persona.

Se bueno.
Perfecto perfecto, va tomando forma la cosa. Entonces dejame ver si entendí bien.

Yo hago una página, cualquier persona puede entrar a la página y tiene una opción: "Crear partida"

a) Si elije "Crear partida" puedo abrir un ServerSocket.java que quede escuchando el puerto 80...esperando conexiones de clientes.

b) Desde un programa en java para PC si elije "Unirse a partida" va a unirse al Servidor en java ya creado en internet a través del puerto 80 y con la ip del host.

¿Entendí bien? ¿Es posible hacer eso? Desde ya muchas gracias por tus respuestas
  #10 (permalink)  
Antiguo 17/12/2011, 14:16
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Creo que no nos entendemos.

El cliente puede abrir un server socket si tiene instalado java y tu aplicación es un applet, porque el server socket la abriría la aplicación java applet. Y si lo hace y tiene un router, tiene que configurar el router, que es lo que no quieres.

Por el lado del servidor, en un servidor de internet NO puedes abrir puertos y menos el 80 que está ocupado por el apache. Salvo que tú seas el administrador de ese servidor, entonces puedes abrir el serversocket en el puerto que quieras.

Y desde el punto de vista de los clientes, no hay diferencia entre que abras el server socket en un servidor de internet o que lo abras en tu propio PC configurando tu router.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #11 (permalink)  
Antiguo 17/12/2011, 14:23
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Cita:
Iniciado por chuidiang Ver Mensaje
Creo que no nos entendemos.

El cliente puede abrir un server socket si tiene instalado java y tu aplicación es un applet, porque el server socket la abriría la aplicación java applet. Y si lo hace y tiene un router, tiene que configurar el router, que es lo que no quieres.

Por el lado del servidor, en un servidor de internet NO puedes abrir puertos y menos el 80 que está ocupado por el apache. Salvo que tú seas el administrador de ese servidor, entonces puedes abrir el serversocket en el puerto que quieras.

Y desde el punto de vista de los clientes, no hay diferencia entre que abras el server socket en un servidor de internet o que lo abras en tu propio PC configurando tu router.

Se bueno.
Perfecto, mejor explicado imposible. Ahora entiendo que en un host común no puedo poner un socket, esté en el lenguaje que esté; salvo que compre el servicio de un servidor dedicado o algo similar.

La única solución (parcial) es la que vos me diste, de configurar mi router y ser yo siempre el servidor. El problema estaría con mucha concurrencia de usuarios (30, 40 o más), mi PC se haría muy lenta...además de que debería dejarla siempre prendida.

Sigo sin poder solucionar completamente mi problema, pero gracias por haberme orientado de esta manera; ahora tengo las cosas un poco más claras. Si se te ocurre algo no dudes en decirmelo, ¡gracias!
  #12 (permalink)  
Antiguo 17/12/2011, 19:26
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Lo que puedes hacer es que tu programa al intentar unirse a un servidor te pida la ip del servidor, con eso podrias hacer que cualquiera pueda ser el servidor y cualquier otro se puede conectar a el, simplemente sabiendo su ip
  #13 (permalink)  
Antiguo 17/12/2011, 19:36
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Cita:
Iniciado por zeus1200 Ver Mensaje
Lo que puedes hacer es que tu programa al intentar unirse a un servidor te pida la ip del servidor, con eso podrias hacer que cualquiera pueda ser el servidor y cualquier otro se puede conectar a el, simplemente sabiendo su ip
Gracias por responder :D , tu idea es la que estoy usando actualmente en una red LAN. El cliente entra, pone la ip del servidor y se conecta.

El problema es si quiero hacer este sistema fuera de una red LAN, osea que el servidor esté en Jamaica y el cliente en España (por decir un ejemplo)
  #14 (permalink)  
Antiguo 18/12/2011, 04:37
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Si no me equivoco es lo mismo. Si el cliente da a crear partida pasa a ser el servidor, y si da a unirse da una ip y se une a un servidor ya existente como cliente. Lo unico que tendrias que advertir (aunque lo deverian saber porque es igual en todos los juegos) es que el que sea servidor tiene que tener el/los puertos (los cuales tambien puedes dejar elegir) abiertos.

Con eso no deverian tener ningun problema.

P.D: Si digo alguna burrada que alguien me corrija que todavia estoy empezando en esto de las redes
  #15 (permalink)  
Antiguo 18/12/2011, 06:51
Avatar de Artificioo  
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Dudas] Sockets: Servidor online, Cliente local

Cita:
Iniciado por zeus1200 Ver Mensaje
Si no me equivoco es lo mismo. Si el cliente da a crear partida pasa a ser el servidor, y si da a unirse da una ip y se une a un servidor ya existente como cliente. Lo unico que tendrias que advertir (aunque lo deverian saber porque es igual en todos los juegos) es que el que sea servidor tiene que tener el/los puertos (los cuales tambien puedes dejar elegir) abiertos.

Con eso no deverian tener ningun problema.

P.D: Si digo alguna burrada que alguien me corrija que todavia estoy empezando en esto de las redes
Gracias por responder de nuevo. Eso es más o menos lo que hablaba con chuidiang, y por ahí expliqué bien por qué no puedo hacer eso

Etiquetas: cliente, php, server, servidor, socket
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:04.