我正在尝试在c#中实现某些特定于源的组播(主要是为了自由选择Internet上的任何组地址,而不会冒任何冲突的风险)。我遵循了that方法,但始终遇到错误:
在getsockopt或setsockopt调用中指定了未知的无效或不受支持的选项或级别
这是一个经典错误,例如,当您指定与 SocketOptionName 不一致的 SocketOptionLevel 时,会发生此错误。但是我检查了是否使用了 SocketOptionLevel.IP ,它是多播选项的正确选择。我也尝试了其他方法,这引起了同样的错误。 您是否知道还有什么可能引发此异常,或者我做错了什么?
这是我的代码:
something else
(是的,显然是从链接复制的,我仍在尝试使其工作)
谢谢!
答案 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);