我有一个多播服务器,它可以在一些端口的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中看到这些数据,但是如果我试图连接它,但是没有数据,谢谢
发布于 2011-06-17 14:07:07
你可能想重新考虑你的问题。IP数据包有一个源地址和目的地址以及端口,因此让我们总结一下:
您正在寻找具有源端口35366.
您必须打开两个套接字,一个侦听端口32334和一个到32335,对于每个套接字,您将不得不到多播地址233.1.2.8。这将从任何主机获得数据包流,现在您可以选择:
198.122.55.191.
connect()限制来自198.122.55.191.
recvmsg()或recvfrom()的数据包读取每个数据包的源IP地址,并过滤application.
订阅多播地址233.1.2.8。
最后一个选项通常需要启用IGMPv3的网络,并且限制在232.0.0.0/8地址。
发布于 2011-06-07 09:02:03
根据定义,组播是单向的:服务器向一个组发送数据,然后您订阅它。
连接到服务器不能通过UDP完成,它需要一个TCP服务器实际在那里并监听该特定端口上的传入连接。该端口用于发送多播数据包这一事实并不意味着也有人在监听它。
如果您想读取从(一个特定端口)发送的数据--那么您需要订阅所有组,并分析UDP数据包(如果您有几台服务器发送,则分析IP帧,以了解原始IP),以查看它们来自何处,并筛选出来自您想要的来源的数据包。
发布于 2011-12-13 10:35:11
你可以看看这个网站。它有一个例子,也是http://tack.ch/multicast/。
https://stackoverflow.com/questions/6260866
复制相似问题