我需要幫助思考客戶端連接並與所有其他客戶端進行通信的設計。我認爲每個客戶端將同時需要一個ServerSocket來偵聽來自其他客戶端的傳入連接,以及一個Socket來啓動與其他客戶端的連接。如何讓客戶端爲其他客戶端創建一個套接字
我測試在本地主機上,因此,如果我使用的端口號來跟蹤連接,我碰到這樣的場景:
Socket A (OS assigned port: a) initiates connection with ServerSocket B (known port: 2222)
Both clients record that connection (a, 2222) is made
Socket B (OS assigned port: b) initiates connection with ServerSocket A (known port: 1111)
Both clients record that connection (b, 1111) is made
我們應該有每對客戶的1個連接,所以上面是浪費。這就是爲什麼我在考慮自己設置本地端口的原因:場景會改變爲連接(1111,2222)和(2222,1111),並且由於第二個是相同的,所以不會保留。
這聽起來合理嗎?
根據你的幫助,我回去再試。你提到的這個問題是我需要幫助的。所以我正在編輯這個問題並在 – Rooster
之上加入它作爲解決方案我最終使用的「協議」是,在每次連接啓動時,您還會發送包含客戶端ID的消息。比我想要的要複雜一點,但它工作到如此地步,我很匆忙。 – Rooster