2013-04-27 34 views
0

我有一個服務器與一個serversocket和一個客戶端,它也是一個線程。 在主客戶端中,我創建了80個客戶端線程實例,並且其中每個實例都與服務器打開了一個連接(使用套接字)。客戶端和服務器都在同一臺計算機上,都使用相同的本地主機和端口。 服務器端的serversocket只接受連接到它的第一個線程,併爲其餘線程拋出異常,因爲它們都來自同一個IP到同一個端口。我該如何解決這個問題?我需要80個線程連接到同一臺計算機上的同一臺服務器(使用相同的IP和端口)。 PS。我也使用多線程,所以在serversocket接受之後,它會創建並啓動一個新線程來處理客戶端的請求。 我只需要在Java中執行此操作。 我將非常感謝您的快速回復。提前致謝。從客戶端連接到同一個serversocket的幾個線程,全部在localhost

回答

0

如果您無法通過其IP和PORT唯一標識客戶端,則需要考慮其他問題。發送數據包時添加某些生成的唯一ID有幫助。當服務器收到客戶端初始請求時,它可以在爲客戶端創建線程時設置該唯一標識。

爲了讓每一次獨特的東西,你可以使用:

UUID.randomUUID() 

從java.util.UUID中; package

並導致每個客戶端具有相同的IP和端口我假設每個客戶端都從服務器獲取每個響應。所以看看包是否適合正確客戶端的邏輯需要在客戶端。

如果這不是你正在尋找的請更新你的問題。

+0

非常感謝您的回答。但我如何使用這個UUID.randomUUID()?我在哪裏添加它,以便seversocket識別來自相同IP和PORt的不同線程? – Shereen 2013-04-27 13:37:26

+0

在將數據包發送到serversocket時添加它。然後,如果沒有用該uuid識別的客戶端,則爲客戶端創建一個新線程。 – 2013-04-27 13:46:09

相關問題