2008-12-20 42 views
6

我想開發簡單的無服務器局域網聊天程序只是爲了好玩。我怎樣才能做到這一點 ?我應該使用什麼類型的建築?開發無服務器局域網聊天程序幫助!

去年我從事TCP,UDP客戶端/服務器應用程序Project.It很簡單(服務器偵聽某些端口/套接字和客戶端連接到服務器的端口等..)但我不知道如何開發「無服務器「局域網聊天程序。我怎樣才能做到這一點? UDP,TCP,多播,廣播?或程序應該像服務器和客戶端一樣行事?

+0

如果有人來到這裏尋找工作解決方案,請檢查此,pidgin(多平臺)與bonjour/zeroconf。 http://www.blog.highub.com/linux/use-bonjour-to-chat-on-ubuntu/ – 2013-04-24 13:13:24

回答

10

最簡單的方法是使用UDP和簡單的廣播郵件都通過網絡進行。 稍微更高級的版本將僅使用廣播來發現網絡中的其他節點。

  • 每個節點維護一個已知的同齡人名單。
  • 消息與TCP一起發送到所有已知的對等體。
  • 當一個節點啓動時,它發送一個UDP廣播來發現其他節點。
  • 當一個節點接收到一個發現廣播時,它將「自己」發送給廣播源,以使其自身已知。接收節點將廣播者添加到它自己的已知對等列表中。
  • 當一個節點跌出網絡,它發送另一個廣播以告知剩餘的節點,他們應該從他們的列表中刪除的刪除的客戶端。

你還必須考慮處理掉節點而不通知網絡的其餘部分。

1

spread toolkit可能是你想要的東西有點大材小用,但一個有趣的起點。

從書籍說明:


傳播是一個開源工具包,提供一種高性能的消息服務是彈性的,以跨本地和廣域網故障。將功能擴展爲分佈式應用程序的統一消息總線,並提供高度調優的應用程序級組播,組通信和點對點支持。傳播服務的範圍從可靠消息傳遞到具有傳遞保證的完全訂購消息。

傳播可以在需要高可靠性,高性能,和成員的各種子集之間魯棒的通信許多分佈式應用中使用。該工具包旨在封裝異步網絡的挑戰性方面,並支持構建可靠和可擴展的分佈式應用程序。

傳播由該用戶應用程序與,它運行即處理器組的一部分的每個計算機上的二進制守護程序,和各種公用和示範程序鏈接的庫。

一些通過傳播所提供的服務和優惠:

  • 可靠和可擴展的消息和羣組通信。
  • 一個非常強大但簡單的API簡化了分佈式體系結構的構建。
  • 易於使用,部署和維護。
  • 從一個局域網絡到複雜的廣域網絡可高度擴展。
  • 支持數千個擁有不同成員集的組。
  • 在出現機器故障,進程崩潰和恢復以及網絡分區和合並時啓用消息可靠性。
  • 爲消息提供一系列的可靠性,排序和穩定性保證。
  • 強調穩健性和高性能。
  • 完全分佈式算法,沒有中心故障點。
+0

傳播做任何事情來解決NAT的問題? – 2008-12-20 22:40:23

0

蘋果iChat是您設想的產品的一個例子。它使用Bonjour(蘋果的零配置網絡協議)來識別LAN上的對等設備。然後,您可以與他們聊天或進行音頻/視頻聊天。

我不完全確定Bonjour是如何工作的,但我知道它使用多播。客戶端在局域網上「註冊」服務,並且Bonjour協議允許每臺主機爲特定服務提供一個主機目錄(全部沒有集中管理)。