2016-02-13 4 views
0

В Java вы можете использовать Socket и ServerSocket, чтобы получить двунаправленный канал для связи между двумя процессами. Но только один из них должен иметь ServerSocket и рассматривается как «сервер», а другой - как «клиент», являющийся сервером, который должен быть доступен первым. Итак, есть ли способ сделать оба пэра одним и тем же кодом? Я имею в виду, приложения клиент-сервер, сервер должен ждать клиентов:Сокет Java «peer» для одноранговой связи

ServerSocket serverSocket = new ServerSocket(port); 
Socket client = serverSocket.accept(); 

тогда клиент должен подключиться к серверу:

Socket socket = new Socket(host, port); 

А если нет активного сервера, клиентский код не работает.

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

+0

Чего вы хотите достичь? Кажется, это проблема XY! Опишите, что вы разрабатываете? –

+0

@Am_I_Helpful Может быть, это проблема XY. Я разрабатываю игру, но мой вопрос просто для любопытства. – user4052054

+0

Пробовали ли вы JXTA framework? –

ответ

4

В одноранговых приложениях каждый партнер является одновременно клиентом и сервером. Несколько потоков обычно используются, чтобы заставить сверстников прослушивать входящие соединения, а также устанавливать новые для других сверстников. Таким образом, код одинаковый для всех одноранговых узлов.

 Смежные вопросы

  • Нет связанных вопросов^_^