2012-09-18 225 views
0

我正在創建一個多線程應用程序,其中服務器應該同時處理多個客戶端請求。此外,客戶應該與其他客戶進行溝通。服務器將保存各種客戶端的端口地址,因此每個客戶端都必須聯繫服務器以瞭解其對等端口的地址。java客戶端服務器應用程序 - 無法創建多個客戶端

我對節目的理解:

client.java(有插座和服務器套接字)

插座 - 用於以沒有登記其ServerSocket的談話的服務器,這將有助於其他同行來鑑別。 (注意:與服務器套接字不同,在創建時我們可能不得不提及端口,套接字#由操作系統唯一分配,因此我們不必擔心這一點。)

serversocket - 用於與其他同行交談,這個數字應該被其他同行知道。


server.java

的ServerSocket - 用於各種客戶


通信現在,我有兩個方案server.java和client.java。當然,爲了擁有多個客戶端,我將不止一次運行client.java。這裏是我的問題:

將我的client.java有兩個端口?一個套接字與服務器對話,一個服務器套接字與其他客戶端對話? 如果是這樣,我是否應該將端口no作爲參數傳遞給client.java,以便它可以用作每個客戶端實例的唯一服務器套接字號?

請幫我一把!

+0

你的標題是什麼意思? – EJP

回答

0

是的,你可以將它們作爲運行時參數傳遞,或者甚至更好地讓服務器爲你決定,這樣你就不必擔心分配唯一的端口號。

另外我相信你將不得不通過客戶端端口和IP爲客戶互相交談,除非你所有的客戶端將在同一臺機器上。

+0

我在本地主機上執行此操作。我是否必須在客戶端程序中同時使用套接字和服務器套接字?不能我只有一個serversocket呢? – user1679463

+0

如果您希望每個客戶端彼此通信,並且您擁有同一臺計算機上或不同計算機上的所有客戶端,則可以避免客戶端上的服務器套接字。爲此,您將必須實現在服務器中將數據從一個客戶端傳遞到另一個客戶端的邏輯。 –

+0

與其他客戶聊天的客戶端應該是點對點的。服務器不應該溫和。服務器僅將對等端的端口號給予請求對等端。 – user1679463

相關問題