【发布时间】:2014-03-01 17:16:09
【问题描述】:
这些天我在玩多播,我遇到了一些我不明白的奇怪事情。
我创建了一个聊天多播客户端,一切似乎都正常。之后,我阅读了一些 linux 文档并发现通过 ping 224.0.0.1 应该会从所有加入某个多播组的节点返回我的回复。我在xp和win7机器上试过。他们两个的行为是相同的。看来我的客户只加入了我定义的组(224.0.19.1)。它不加入 224.0.0.1 组。
来自wireshark: [source ip] 224.0.0.22 IGMPv3 54 Membership Report / 任何来源加入组 224.0.19.1
这是我设置套接字的方式:
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));
m_socket.Bind(ipep);
IPAddress ip = IPAddress.Parse(mcastGroup);
m_socket.SetSocketOption(
SocketOptionLevel.IP, SocketOptionName.AddMembership,
new MulticastOption(ip, IPAddress.Any));
然后我检查了netsh:
C:\Users\user1>netsh interface ip show joins
Interface 1: Loopback Pseudo-Interface 1
Scope References Last Address
---------- ---------- ---- ---------------------------------
0 2 Yes 239.255.255.250
Interface 11: LAN
Scope References Last Address
---------- ---------- ---- ---------------------------------
0 0 Yes 224.0.0.1
0 1 Yes 224.0.0.252
0 1 Yes 224.0.19.1
0 1 Yes 230.230.230.230
0 2 Yes 239.255.255.250
Interface 15: Local Area Connection* 9
Scope References Last Address
---------- ---------- ---- ---------------------------------
0 0 Yes 224.0.0.1
并且您可以注意到没有对 224.0.0.1 地址的引用。 当然,我确实关闭了两台机器上的防火墙。
现在的问题是:Windows 不支持此功能吗? .NET 不支持?我忘了实施什么吗?我将不胜感激任何帮助。谢谢。
【问题讨论】:
标签: windows networking network-programming ip multicast