2012-10-13 30 views
0

我正在研究分佈式應用程序,其中一組邏輯節點相互通信。如何在linux分佈式系統中監聽端口上的廣播

在初始發現階段,每個邏輯節點啓動並向網絡發送UDP廣播數據包,以通知其餘節點其存在。

對於不同的物理主機,可以通過同意端口號並跟蹤從其他主機接收到的UDP廣播來輕鬆處理。

我的問題是 - 我需要能夠在同一臺機器上處理多個邏輯節點的情況。

所以在這種情況下,似乎我不能綁定到同一端口兩次。如果同一個盒子上有兩個邏輯節點,我該如何處理節點發現案例?提前感謝!

回答

0

你的選擇是:

  1. 創建原始套接字,並聽取他們對特定的網卡,這樣一來,所有的數據包通過查看每個數據包的內容,進程將確定是否該數據包是註定是爲了自己。問題在於你需要處理大量的數據包。這就是爲什麼我們的操作系統的內核將套接字綁定到進程,所以流量得到最佳分配。

  2. 創建一個專門的服務,即守護進程將處理可用於執行工作的新進程的公告。啓動時,該流程將不得不向服務器公佈其端口號。這通常是如何完成的。

  3. 爲每個要運行的進程使用虛擬IP地址,每個進程綁定到不同的IP地址。如果您在本地網絡上運行,這是最簡單的方法。

  4. 定義端口範圍並在您定義的所有IP地址上掃描該範圍。

+0

在大多數Unix系統(包括Linux)下,選項(1)很可能需要root權限才能使進程能夠創建原始套接字。 –