使用服务器的实际IP和端口连接到多播服务器

时间:2011-06-07 05:18:07

标签: c++ networking mfc udp multicast

我有一个多播服务器,在某些端口上的IP 233.1.2.8上进行多播 我需要使用其实际IP直接连接到该服务器,不想使用广播。我想获得它在特定端口发送的实际数据,比如说

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

所以我想阅读 35366

的数据

我可以看到CommView.exe中的数据,但是如果我尝试连接它连接但是没有数据则无法读取它 感谢

3 个答案:

答案 0 :(得分:1)

您可能想重新考虑一下您的问题。 IP数据包具有源和目标地址和端口,因此总结一下:

  1. 您正在寻找源端口为35366的组播数据包。
  2. 组播地址233.1.2.8。
  3. 目标端口32334或32335。
  4. 对于每个套接字,您必须打开两个套接字,一个监听端口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。
    4. 最后一个选项通常需要启用IGMPv3的网络,并且仅限于232.0.0.0/8地址。

答案 1 :(得分:0)

根据定义,多播是单向的:服务器将数据发送到一个组,然后您订阅它。

无法通过UDP连接到服务器,它需要实际存在TCP服务器并侦听该特定端口上的传入连接。该端口用于发送多播数据包的事实并不表明有人在监听它。

如果要读取特定端口发送的数据 - 那么您需要订阅所有组,并分析UDP数据包(如果您有多个服务器传输,则分析IP帧,知道原点IP),看看它们来自哪里,过滤掉你想要的原点。

答案 2 :(得分:0)

您可以查看此网站。它也有一个例子 http://tack.ch/multicast/