我有一个多播服务器,在某些端口上的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
中的数据,但是如果我尝试连接它连接但是没有数据则无法读取它
感谢
答案 0 :(得分:1)
您可能想重新考虑一下您的问题。 IP数据包具有源和目标地址和端口,因此总结一下:
对于每个套接字,您必须打开两个套接字,一个监听端口32334,一个监听32335,对于多播地址233.1.2.8。这可以从任何主机获取数据包流,现在您可以选择:
connect()
限制来自198.122.55.191的数据包。recvmsg()
或recvfrom()
读取包含源IP地址的每个数据包,并在应用程序中过滤流。最后一个选项通常需要启用IGMPv3的网络,并且仅限于232.0.0.0/8地址。
答案 1 :(得分:0)
根据定义,多播是单向的:服务器将数据发送到一个组,然后您订阅它。
无法通过UDP连接到服务器,它需要实际存在TCP服务器并侦听该特定端口上的传入连接。该端口用于发送多播数据包的事实并不表明有人在监听它。
如果要读取从特定端口发送的数据 - 那么您需要订阅所有组,并分析UDP数据包(如果您有多个服务器传输,则分析IP帧,知道原点IP),看看它们来自哪里,过滤掉你想要的原点。
答案 2 :(得分:0)
您可以查看此网站。它也有一个例子 http://tack.ch/multicast/