Java - не работает сокет TCP
Я использую TCP-соединение для отправки данных между клиентом и серверной программой. В приведенном ниже коде для сервера я настроил сервер и у меня есть метод прослушивания для прослушивания входящих соединений.
private void initialiseServer() {
try {
serverSocket = new ServerSocket(22222, 8, InetAddress.getLocalHost());
System.out.println("Hosting server");
} catch (Exception e) {
e.printStackTrace();
}
playerone = false;
}
private void listenForServerRequest() {
try {
socket = serverSocket.accept();
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
accepted = true;
System.out.println("CLIENT HAS REQUESTED TO JOIN, ACCEPTED");
} catch (IOException e) {
e.printStackTrace();
}
}
Когда соединение установлено, сервер должен вывести на свою консоль сообщение "КЛИЕНТ ЗАПРОШЕН, ЧТОБЫ ПРИСОЕДИНИТЬСЯ, ПРИНЯТО".
Ниже приведена клиентская программа для сокетов:
private boolean connect(String ip) {
try {
socket = new Socket(ip, 22222);
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
accepted = true;
} catch (IOException e) {
System.out.println("Unnable to connect to address");
return false;
}
System.out.println("Successfully connected");
return true;
}
Который должен выводить "Успешно подключен" при подключении.
Эта программа работает, когда я использую один компьютер под управлением клиента и сервера, подключающийся к себе через "localhost" в качестве IP-адреса, но при попытке подключения к другим компьютерам с использованием того же интернет-маршрутизатора клиент просто останавливается на 30 секунд, пытаясь подключиться, а затем выходит из строя.
Чтобы определить IP-адрес хост-компьютера, в котором клиентский компьютер вводит метод connect, я использую ipv4, но я не уверен, является ли это правильным адресом для проверки или есть что-то еще, что мне нужно сделать в котором для подключения к кому-либо через сокеты. К сожалению, поскольку у меня нет 2 доступных устройств, я могу проверять его только время от времени, что затрудняет поиск решения. Любой совет будет принята с благодарностью!