【问题标题】:Multicast socket on windows XP?Windows XP上的多播套接字?
【发布时间】:2013-03-22 22:50:07
【问题描述】:

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

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

【问题讨论】:

标签: c# sockets udp windows-xp multicast


【解决方案1】:

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

C# SocketException with Multicast on XP

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多