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 доступных устройств, я могу проверять его только время от времени, что затрудняет поиск решения. Любой совет будет принята с благодарностью!

0 ответов

Другие вопросы по тегам