saber recuperar publica obtener equipo direccion desde consultar java sockets networking server client

publica - recuperar ip java



Enchufe de Java conectado a una dirección IP pública (3)

¿Qué versión de protocolo IP usa tu aplicación? En Linux, puede averiguarlo con netstat -tunap | grep 52000 netstat -tunap | grep 52000 y viendo si el primer campo es tcp o tcp6 . En este último caso, es posible que exista un problema con la conectividad IPv6 y prefiera usar IPv4 a IPv6 especificando -Djava.net.preferIPv4Stack=true a JVM.

Necesito hacer un servidor y un cliente que se conecte al servidor.

Problema : "el servidor funciona. El cliente solo puede conectarse a un servidor local, no puede conectarse a un servidor en Internet. Quiero que el cliente se conecte al servidor, a través de una dirección IP pública en la que está alojado el servidor".

En primer lugar, me he asegurado de que el puerto se reenvía y se puede alcanzar. He probado el puerto. En segundo lugar, he desactivado el firewall completamente de la máquina del servidor.

a continuación está el código de prueba que estoy usando:

El servidor: nada elegante simplemente simple: termina si un cliente está conectado, de lo contrario solo espera una conexión.

public class Server { public static void main(String args[]) { try { ServerSocket srvr = new ServerSocket(52000); srvr.accept(); } catch(Exception e) { e.printStackTrace(); } } }

El cliente: he utilizado no-ip.com para enmascarar la ip del servidor a "biogenserver2.noip.me". Usando .getCanonicalHostName (); devolverá el ip.

public class Client { public static void main(String args[]) { try { String ip = Inet4Address.getByName("somets.noip.com").getCanonicalHostName(); InetSocketAddress sa = new InetSocketAddress(ip, 52000); //Socket skt = new Socket("0.0.0.0", 52000); //local - this works fine. Socket skt = new Socket(); skt.connect(sa); } catch(Exception e) { e.printStackTrace(); } } }

Cuando ejecuto esto, el servidor se conecta bien, pero el cliente devuelve una excepción de "tiempo de espera de conexión"

Cualquier ayuda será apreciada. Gracias.


Puede llevar tiempo finalizar el protocolo de enlace de 3 vías y el tiempo de espera del cliente antes de que el servidor acepte al cliente.


Responder:

"Solo por claridad: ha comprobado que el puerto está abierto a través de IP pública devuelto por no-ip y el servidor se cerrará sin excepción cuando ejecuta ese pequeño cliente de prueba (en una máquina que no es la máquina servidor) - ¿es correcto? " - Fildor

TL: DR

No ejecute el cliente y el servidor en la misma máquina y la misma red que intenta conectarse a su servidor a través de su IP pública y luego a su propia red local dará como resultado una excepción de tiempo de espera del cliente

Estaba ejecutando el cliente y el servidor en la misma máquina y también en la misma red. Esto provocó la excepción de tiempo de espera del cliente. Traté de ejecutar el cliente en una máquina diferente y una red diferente y pude conectarme con éxito.