C#-SocketOptionName.AddSourceMembership未知,无效或不受支持

时间:2018-07-19 12:05:40

标签: c# multicast

我正在尝试在c#中实现某些特定于源的组播(主要是为了自由选择Internet上的任何组地址,而不会冒任何冲突的风险)。我遵循了that方法,但始终遇到错误:

  

在getsockopt或setsockopt调用中指定了未知的无效或不受支持的选项或级别

这是一个经典错误,例如,当您指定与 SocketOptionName 不一致的 SocketOptionLevel 时,会发生此错误。但是我检查了是否使用了 SocketOptionLevel.IP ,它是多播选项的正确选择。我也尝试了其他方法,这引起了同样的错误。 您是否知道还有什么可能引发此异常,或者我做错了什么?

这是我的代码:

something else

(是的,显然是从链接复制的,我仍在尝试使其工作)

谢谢!

1 个答案:

答案 0 :(得分:0)

我有以下代码可以工作:

Socket mySocket = new Socket(AddressFamily.InterNetwork,
                     SocketType.Dgram,
                     ProtocolType.Udp);

// Join or create a multicast group
IPAddress multicastGroupAddress = IPAddress.Parse("224.1.1.1");

EndPoint localEndPoint  = (EndPoint)new IPEndPoint(IPAddress.Any, 2000);
mySocket.Bind(localEndPoint);
MulticastOption mcastOption = new MulticastOption(multicastGroupAddress);

mySocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOption);