2012-07-11 68 views
0

所以我一直在爲這個模板服務器建立一個小型服務器來實踐。 http://www.kieser.net/linux/java_server.html發送到所有功能。多線程服務器

我得到了工作客戶端,但我很難弄清楚如何從客戶端發送消息到服務器,並從該線程發送到所有其他客戶端而不是隻有一個客戶端。

任何人都可以闡明我如何去做這件事嗎?

+0

你嘗試過這麼遠嗎?當我做了一件類似的事情時,我保留了一個已創建的「doComs」對象列表,然後在整個列表中調用方法。從列表中刪除doComs對象時通常會在單獨的線程上發生 – 2012-07-11 09:02:45

+0

我嘗試使用可以訪問主類並通過連接到最後一個doCom創建的新輸出流來發送內容的函數。但是這導致第一個客戶端發送給任何客戶端,但它不會接收來自其他客戶端的數據。我喜歡你的doComs列表。你能詳細解釋一下嗎? – Smallbro 2012-07-11 09:08:48

+0

ok ..所以在服務器中,當你創建一個新的doCom對象時,它將它存儲到列表中。 (但現在當存儲/刪除它時,其他線程可能會使用該列表以便避免併發修改異常,您將需要鎖定列表)。當你在doCom中遇到異常時,你需要從列表中刪除doCom對象,因爲異常會暗示你不能與那個channed溝通 – 2012-07-11 09:26:36

回答

0

對此有讀。這應該說明一切了很多比我好的人:P

http://www.dreamincode.net/forums/topic/259777-a-simple-chat-program-with-clientserver-gui-optional/

+0

從短暫略讀這看起來非常好。當我回家後我嘗試添加這種方法。這聽起來很不錯。謝謝。 – Smallbro 2012-07-11 09:56:11

+0

謝謝,這正是我所需要的。我只是跑它而且效果很好。 :D – Smallbro 2012-07-11 20:21:02

+0

不客氣 – 2012-07-12 10:15:30