Протокол Java P2P - PullRequest
       16

Протокол Java P2P

0 голосов
/ 26 мая 2019

Я хочу создать программу обмена экранами с P2P и TCP.Это означает (из моего прочтения), что нет главного сервера, и у всех клиентов есть Socket и ServerSocket

. Я не понимаю, как я могу сделать это на внешнем, а не локальном.

Чтобы создать ServerSocket, вам нужно указать порт, который вы используете, но для этого вам нужно выполнить переадресацию портов на маршрутизаторе.Проблема в том, что я не могу быть уверен, что на клиентах есть открытый порт для создания на них сервера.

Я прочитал о UPnP, и после этого я сделал следующее:попытался подключиться к моему серверу на моем компьютере из другой сети.Я создал ServerSocket на своем компьютере без переадресации портов, отключив брандмауэр и включив UPnP на своем маршрутизаторе.Но компьютер из другой сети не смог подключиться к моему серверу.Если требуется, то это код для сервера:

public static void main(String[] args) throws IOException
{
    System.out.println("server");
    ServerSocket server = new ServerSocket(ANY_PORT);

    while(true)
    {
        Socket s = server.accept();
        System.out.println(s.getInetAddress() + " " + s.getPort());
    }   
}

, а это клиент:

public static void main(String[] args) throws UnknownHostException, IOException
{
    Socket client = new Socket(MY_IP, ANY_PORT);

    client.close();
}
...