如何在C#(IGMPv3)中加入源特定组播组

Abs*_*lom 2 c# sockets multicast igmp

我们有一个C#应用程序,可以加入和接收来自多播组的数据.这很好用.我们现在想要支持IGMPv3并且能够在加入多播组时指定源的IP.从MSDN文档中,我看不到如何执行此操作.我发现以下链接似乎回答了我的问题.

http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/e8063f6d-22f5-445e-a00c-bf46b46c1561

这是我实现这个的方式:

byte[] membershipAddresses = new byte[12]; // 3 IPs * 4 bytes (IPv4)
Buffer.BlockCopy(multicastIp.GetAddressBytes(), 0, membershipAddresses, 0, 4);
Buffer.BlockCopy(sourceIp.GetAddressBytes(), 0, membershipAddresses, 4, 4);
Buffer.BlockCopy(localIp.GetAddressBytes(), 0, membershipAddresses, 8, 4);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, membershipAddresses);
Run Code Online (Sandbox Code Playgroud)

但是当我用这个错误调用SetSocketOption()时,我得到一个SocketException : The requested address is not valid in its context.

有人能指出我在这里做错了吗?谢谢!

Ste*_*e-o 5

链接说明SocketOptionName.AddSourceMembership,您正在使用AddMembership.