2011-06-07 112 views
1

我有一個多播服務器,在某些端口上IP 233.1.2.8上多播
我需要使用其實際IP直接連接到該服務器不想使用廣播。我想它會發送一個特定的端口上的實際數據讓說使用服務器的實際IP和端口連接到多播服務器

Multicast Ip 233.1.2.8 port 32334 and 35245 
Actual IP 198.122.55.191 port 35366 

,所以我想讀的

數據我可以看到CommView.exe的數據,但如果我不能讀它嘗試連接它連接,但沒有數據 謝謝

+0

它的可行性,似乎你有一個bug ...也許服務器只聽,但不接受。發佈一些代碼,以便我們可以嘗試幫助... – 2011-06-07 06:03:34

回答

0

多播按定義是單向街道:服務器發送數據到一個組,並訂閱它。

連接到服務器不能通過UDP完成,它需要一個實際在那裏的TCP服務器並監聽該特定端口上的傳入連接。該端口用於發送多播數據包的事實並不表明有人在監聽它。

如果要讀取的數據從發送一個特定的端口 - 那麼你需要訂閱的所有羣體,如果你有幾臺服務器傳輸,要知道起源分析UDP數據包(和IP幀IP)來查看它們來自哪裏,並篩選出來自你喜歡的來源。

1

您可能想重新考慮您的問題。 IP包有一個源和目的地址和端口,所以讓我們總結一下:

  1. 您正在尋找與源端口的組播包35366.
  2. 組播地址233.1.2.8。
  3. 目標端口32334或32335.

您必須打開兩個插座,一個監聽端口32334和一個32335,每個插座你將不得不多播地址233.1.2.8。這可以從任何主機獲得數據包流,現在您可以選擇:

  1. 使用connect()限制爲來自198.122.55.191的數據包。
  2. 使用recvmsg()recvfrom()來讀取每個具有源IP地址的數據包,並過濾應用程序內的數據流。
  3. 使用源特定組播(SSM)並訂閱來自198.122.55.191的組播地址233.1.2.8。

最後一個選項通常需要啓用IGMPv3的網絡,並限制爲232.0.0.0/8地址。

+0

根據我需要閱讀兩個多播端口的建議非常感謝你 – Dev 2011-06-20 04:55:55