组播源

时间:2008-11-14 22:08:26

标签: c#

我正在通过多播发送xml feed,但不知道多播组地址。我可以只使用localhost吗?就是这样,

Socket socket = 
     new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
IPEndPoint ip = new IPEndPoint(IPAddress.Any,8888);
socket.Bind(ip);
socket.SetSocketOption
   (SocketOptionLevel.IP, 
    SocketOptionName.AddMembership, 
    new MulticastOption(IPAddress.Parse("127.0.0.1"),IPAddress.Any));

byte[] data = new byte[1024];
int length = socket.Receive(data);

...

3 个答案:

答案 0 :(得分:2)

没有

您(您的客户端)需要加入组播组,您将AddMembership加入组播组IP,然后连接。

否则您将无法接收多播Feed。您的代码可以使用UDP广播。

答案 1 :(得分:2)

严格地说,如果您在非多播地址上打开组播数据的侦听端口,那么您实际上是在侦听标准UDP。组播和UDP之间的区别在于IP地址。它是一个特殊的IPV4地址范围,与固定主机无关。相反,它以伪发布 - 订阅方式被网络边缘的路由器识别。在您的子网多播中,所有意图和目的与广播相同。

如果您写入多播地址,则子网上的所有主机都可以使用该地址。如果您的路由器支持多播,那么它将向任何宣布他们感兴趣的客户端提供上游。把它当作子网的发布/订阅。

所有这些都说,如果您正在寻找相当于多播的本地主机,那么您可能需要查看广播。

答案 2 :(得分:0)

与单播不同,您需要知道多播的组地址。

相关问题