2016-01-24 85 views
-1

我需要爲本地網絡製作基於TCP的分散式聊天應用程序。通過分散我的意思是沒有中央服務器。網絡上的每個實體都應具有服務器/客戶端體系結構。當應用程序啓動時,它應該檢查哪個用戶在線(已經運行該應用程序)。我的問題是我如何檢查?我可以通過嘗試從socket庫中通過connect()函數進行連接嗎?我是編程新手,尤其是套接字編程,所以如果提前抱歉是一個愚蠢的問題。C基於TCP的分散式聊天應用程序

回答

0

如果您想要保持分散,您可能需要嘗試multicastingbroadcasting向網絡上的所有主機發送請求數據包,以發現您的聊天應用程序的其他實例。

Pidgin中實現了類似的東西,名稱爲Bonjour。它工作得非常好,並提供本地網絡上的聊天功能。更具體地說,它被定義爲的XMPP

如果您正在查找代碼示例,請查看我使用多播發現本地網絡上提供特定服務的主機的其中一個項目:Headersimplementation

1

你絕對應該研究其他分散式應用程序如何執行此操作。有很多技術。

應用程序的每個實例都應該作爲其服務器功能的一部分來跟蹤應用程序的其他實例的地址。作爲客戶端功能的一部分,每個實例都應跟蹤它可以連接的幾個實例。優先考慮已經存在了很長時間的實例。

該軟件應該包括一個長期運行並且預計通常可用的服務器列表。你可能希望包含一個DNS這樣的回退方法,任何人都願意保留一個知名服務器列表,通過知名端口提供訪問權限。回退方法也可以是IRC或HTTP。