0

我有一个在 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 上总是崩溃。

您对如何调试/解决此问题有任何想法吗?

4

1 回答 1

0

抱歉,我刚刚找到了另一个答案,其中有完全相同的问题:

在 XP 上使用多播的 C# SocketException

我们必须Bind在加入多播之前调用socketOption

于 2013-03-22T12:52:40.447 回答