2016-02-13 46 views
0

在Java中,可以使用SocketServerSocket來獲得雙向通道,以便在兩個進程之間進行通信。但是其中只有一個必須具有ServerSocket,並且被視爲「服務器」,另一個作爲「客戶端」,作爲服務器必須首先可用。那麼,有沒有辦法讓兩個同行代碼相同?我的意思是,在客戶端 - 服務器應用程序,服務器必須等待客戶端:用於點對點通信的Java「對等」套接字

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框架? –

回答

4

在對等應用程序中,每個對等端既是客戶端又是服務器。通常使用多個線程使對等端能夠監聽傳入的連接併爲其他對等端建立新的連接。因此,所有同行的代碼都是一樣的。