Eu criei um servidor KryoNet muito básico e um programa cliente. Se eu conectar o cliente através de localhost, ele funcionará como esperado. Agora eu quero me conectar a ele de fora, então eu configurei um DNS para mim mesmo com a ferramenta de DNS dinâmico do noip.com. Quando me conecto através do DNS, o IP correto é mostrado pelo KryoNet, mas ele não se conecta.
Servidor:
public class ServerTester {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Server server = new Server();
server.start();
server.bind(TCP, UDP);
server.getKryo().register(Packet.class);
server.getKryo().register(TestPackage.class);
server.addListener(new Listener() {
public void received (Connection connection, Object object)
{
if (object instanceof Packet)
{
if (object instanceof TestPacket)
{
TestPacket p1 = (TestPacket) object;
System.out.println("server received: " + p1.name);
}
}
}
});
}
}
Cliente:
public class ClientTester {
public static void main(String[] args) {
Client client = new Client();
client.start();
try {
client.connect(5000, "my.dynamic.dns", TCP, UDP);
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Could not connect to server");
}
client.getKryo().register(Packet.class);
client.getKryo().register(TestPacket.class);
TestPacketp1 = new TestPacket();
p1.name = "Menno Gouw";
client.sendTCP(p1);
}
}
Eu encaminhei as portas que usei para TCP e UDP no meu roteador. Não tenho certeza se há um risco de segurança em mostrar as portas, então apenas faço algumas perguntas para essa questão. Encaminhei as portas para o meu endereço IPv4 que recebo do ipconfig e meu endereço de internet real.
TCP = 8001
UDP = 8002
Public-Port-Range | Target IP | Target Port Range | Protocol
8001-8002 | IPv4 Address | 8001-8002 | Both
8001-8002 | real Address | 8001-8002 | Both
Então, por que o cliente não está se conectando? É o meu encaminhamento de porta ou meu ISP poderia estar bloqueando isso de alguma forma?
Como eu disse, se eu usar o host local (127.0.0.1) para meu cliente se conectar ao servidor, tudo funcionará como esperado. Quando tento me conectar com meu DNS dinâmico, recebo uma mensagem do KryoNet que está se conectando ao meu endereço IP "real" no console:
00:00 INFO: Connecting: my.dynamic.dns/XXX.XXX.XXX.XXX:8001/8002
Mas após o tempo limite de 5000 ms, ele não consegue se conectar.