Я сделал очень простую серверную и клиентскую программу KryoNet. Если я подключаю клиента через localhost, он работает как положено. Теперь я хочу подключиться к нему извне, поэтому я настроил DNS для себя с помощью динамического инструмента DNS с noip.com. Когда я подключаюсь через DNS, KryoNet показывает правильный IP-адрес, но он не подключается.
Сервер:
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);
}
}
}
});
}
}
Клиент:
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);
}
}
Я перенаправил порты, которые я использовал для TCP и UDP на моем маршрутизаторе. Не уверен, что при отображении портов существует угроза безопасности, поэтому я просто компенсирую этот вопрос. Я переадресовал порты как для своего IPv4-адреса, полученного из ipconfig, так и для моего реального интернет-адреса.
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
Так почему же клиент не подключается? Это переадресация моего порта или мой провайдер может как-то это блокировать?
Как я уже сказал, если я использую localhost (127.0.0.1) для моего клиента для подключения к серверу, все работает как положено. Когда я пытаюсь подключиться к моему динамическому DNS, я получаю сообщение KryoNet, что оно подключается к моему "реальному" IP-адресу в консоли:
00:00 INFO: Connecting: my.dynamic.dns/XXX.XXX.XXX.XXX:8001/8002
Но после 5000 мс не удается подключиться.