2014-01-25 172 views
0

我正在寫一個接受來自多個客戶端的連接的TCP服務器,該服務器從它所運行的系統收集數據並將其發送給每個連接的客戶端。廣播服務器

什麼樣的設計模式最適合這種情況?

示例 將所有連接放入數組中,然後遍歷數組並逐個將數據發送到每個客戶端。優點:非常容易實施。缺點:處理大量數據時效率不高。

回答

0

更簡單的方法是使用一些現有的軟件來做到這一點...例如使用https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=d5bedadd-e46f-4c97-af89-22d65ffee070

如果你想自己寫,你需要一個列表(鏈接列表)來管理連接。

這裏是一個服務器http://examples.oreilly.com/jenut/Server.java

如果要處理大量數據的一個例子,這些技術之一是具有與每個在服務器端的用戶相關聯的隊列。多線程程序可以將數據從這些隊列發送到客戶端。

0

已經爲分佈式處理和服務器開發了許多模式,例如在ACE項目中:http://www.cs.wustl.edu/~schmidt/patterns-ace.html。設計可能集中在通知數據已被接收並可能被讀取,或緩衝區已被清空並且現在可以寫入更多數據的事件。至少在32位地址空間是規則的時候,你可以擁有比線程更多的開放連接,所以你通常會有少量線程等待事件,這些事件宣佈他們可以安全地讀或寫沒有拖延,直到另一方合作。這可能來自事件,或來自諸如select()或poll()的呼叫終止。模式也與http://zguide.zeromq.org/page:all#-MQ-in-a-Hundred-Words有關。