我有一个在 Windows 7 上运行良好的小软件。它使用 udp 上的多播进行了一些发现。
我开始在 Windows XP 上进行一些测试,但遇到了一些错误。
Socket sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//ERROR HAPPEN ON THIS NEXT LINE
sendSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(m_multicastAddress, localAddress));
sendSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 255);
sendSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
sendSocket.MulticastLoopback = true;
sendSocket.Bind(new IPEndPoint(localAddress, m_port));
m_sendSockets.Add(localAddress, sendSocket);
例外是:
System.Net.Sockets.SocketException was unhandled
Message=An invalid argument was supplied
Source=System
ErrorCode=10022
NativeErrorCode=10022
StackTrace:
at System.Net.Sockets.Socket.setMulticastOption(SocketOptionName optionName, MulticastOption MR)
at System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Object optionValue)
at [****]
我在一个 100 行的控制台程序中只测试了这部分代码。它在 Windows 7 上运行良好,但在 XP 上总是崩溃。
您对如何调试/解决此问题有任何想法吗?