Windows XP上的多播套接字?

时间:2013-03-22 12:37:24

标签: c# sockets udp windows-xp multicast

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

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

1 个答案:

答案 0 :(得分:0)

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

C# SocketException with Multicast on XP

我们必须在加入多播socketOption

之前调用Bind