Развертывание сокета сервера Java на экземпляре EC2. Таймаут подключения к клиентскому сокету

Я сталкиваюсь с тайм-аутом при попытке подключиться с моего java-клиента websocket к моему серверу websocket, который развернут в экземпляре EC2.

Соединение на моем локальном компьютере работает нормально, а группа безопасности разрешает весь входящий трафик TCP.

Я предполагаю, что мне не хватает сетевого шага.

Шаги, которые я выполнил для развертывания серверного сокета на EC2:

  • Запустить инстанс EC2 (Amazon Linux)
  • Установите java и maven
  • Выполните команду mvn clean -X и mvn install
  • Выполнить команду java -jar mywebserver.jar

-> результат: код работает в порту xxx

Создание серверного сокета:

    try {


        s = new ServerSocket(port); //listen on specified port

        Log.add("Port " + port + " address: " + s.getInetAddress() + ": server started");


    } catch (IOException ex) {
        Log.add("Server error " + ex + "(port " + port + ")");
        throw new Exception("Error "+ex);
    }

Клиентский Интернет

public Client(String serverIp, int serverPort) throws UnknownHostException, IOException {
    s = new Socket(serverIp, serverPort);
}

Спасибо большое за вашу помощь.

Феликс


person fegugi    schedule 22.01.2019    source источник


Ответы (1)


Я бы посоветовал:

  • Еще раз проверьте настройки брандмауэра
  • попробуйте ping / telnet server machine с клиента и т. д.
  • Используйте InetAddress при инициализации Socket в клиентском коде, так как вы также можете использовать его метод isReachable ()

Я думаю, вам также не хватает следующей части на стороне сервера:

Socket socket = s.accept();

См. Несколько примеров сокетов клиент / сервер, например: https://www.journaldev.com/741/java-socket-programming-server-client

person nullPointer    schedule 22.01.2019
comment
Спасибо за Ваш ответ. * Брандмауэры должны быть в порядке, так как я могу подключиться через SSH к моему экземпляру EC2. * Также я попытался создать сервер с помощью InetAddress - person fegugi; 22.01.2019
comment
В ответ добавлена ​​часть s.accept(), которая может отсутствовать на стороне сервера - person nullPointer; 23.01.2019