我正在用Java創建一個聊天應用程序。我毫不費力地讓服務器接受多個客戶端套接字連接並維護多個線程。我已經設法讓他們發送和接收消息。在Java中,如何創建到同一特定客戶端的多個套接字連接?
然而,我無法弄清楚如何創建多個套接字連接到同一個特定的客戶端。在服務器和客戶端上,我都有一個用於發送和接收聊天消息的線程。我希望有另外一個連接來做後臺工作,比如發送文件,同時繼續傳遞聊天消息。
例如,客戶端1和客戶端2通過服務器,這使帳戶數據庫和聊天消息短信彼此。我希望能夠從Client1發送文件到Client2,反之亦然。
Connection1: Client1 <--message--> Server <--message--> Client2
Connection2: Client1 --file--> Server --file--> Client2
or
Connection2: Client1 --file--> Client2
我在想如何爲每個客戶端有IP地址,我可以使用它們來創建新的連接。但是,由於我在本地主機上運行這個,所有的IP地址都是相同的,所以我不能這樣做。
使用TCP端口? – xTrollxDudex
IRC很久以前就解決了這個問題。看看[DCC](http://en.wikipedia.org/wiki/Direct_Client-to-Client)如何處理它。 (這不是所有的NAT友好的,但你不會發現很多,除非服務器最終涉及每個字節傳輸。) – cHao
客戶端連接到服務器,而不是相反。 – EJP