Я хочу создать программу обмена экранами с 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();
}