所以問題是我有15個客戶端需要能夠互相溝通。我的問題是如何做到這一點?顯然,一種方法是簡單地將客戶端也作爲服務器,但這意味着完全連接十五個客戶端所需的120個唯一連接。我寧願不這樣做,因爲它似乎凌亂。Java套接字 - 許多客戶端之間的消息
當前解決方案: 每個新連接都有服務器分離一個單獨的線程來偵聽它。每個客戶端都有一個單獨的線程監視傳入信息的頻道。
服務器充當消息路由器:流程1需要向流程2發送消息,並向服務器發送指示預期收件人,發件人和消息的消息。
收到消息後,服務器將消息傳遞給進程2.偵聽線程檢測到它並將其傳遞給進程。
對於客戶端之間的每條消息都是如此。
這看起來很笨重。有沒有更好的方法/包來使用它?
您可以查看隨Java 7引入的java.nio包。它提供了非阻塞套接字通道,以更好地處理您的類型。 http://docs.oracle.com/javase/7/docs/api/java/nio/channels/SocketChannel.html – Alexandre 2014-09-26 20:31:47
看看UDP/[DatagramSocket](http://download.java.net/jdk7/存檔/ B123 /文檔/ API/JAVA/NET/DatagramSocket.html)。沒有確認,數據到達,就像使用TCP/Socket一樣,但它允許所有的服務器發送recive的東西給任何他們想要的東西。 – 2014-09-26 20:32:06
您可能想要探索點對點方法! – 2014-09-26 20:32:30