Как подключиться к jar файлу на виртуальном сервере используя сокеты?

Пишу клиент-серверное приложение (чат). На ПК все отлично работает (клиентская часть подключается к серверной). Из серверной части приложения создал jar файл и поместил на виртуальный сервер. Как сделать так, чтобы моя клиентскя часть программы подключалась к серверной, что находится на виртуальном сервере?

В данный момент я пытался подключится через ip сервера и порт, что открывает jar файл. Но программа выдает ошибку:

java.net.ConnectException: Connection timed out: connect

Ниже приведены коды программ (ip виртуалки левое).

Client.java

package ClientData;

import java.io.*;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try(
            Socket socket = new Socket("11.11.111.111", 7777);
            BufferedWriter writer =
                    new BufferedWriter(
                            new OutputStreamWriter(
                                    socket.getOutputStream()));

            BufferedReader reader =
                    new BufferedReader(
                            new InputStreamReader(
                                    socket.getInputStream()))
        ) {
            System.out.println("Connected to server");
            String request = "Monkey";
            System.out.println("Request " + request);
            writer.write(request);
            writer.newLine();
            writer.flush();

            String response = reader.readLine();
            System.out.println("Response " + response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Server.java

package ServerData;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args){
        try(ServerSocket server = new ServerSocket(7777)){
            System.out.println("Server started");

            while (true) {
                try (
                        Socket socket = server.accept();
                        BufferedWriter writer =
                                new BufferedWriter(
                                        new OutputStreamWriter(
                                                socket.getOutputStream()));

                        BufferedReader reader =
                                new BufferedReader(
                                        new InputStreamReader(
                                                socket.getInputStream()))
                ) {
                    String request = reader.readLine();
                    System.out.println("Request " + request);

                    String response = "Hello from server " + request.length();
                    System.out.println("Response " + response);
                    writer.write(response);
                    writer.flush();
                    writer.newLine();

                } catch (Exception ignored) {
                }
            }

        } catch (IOException e){
            throw new RuntimeException(e);
        }
    }
}

Ответы (0 шт):