【问题标题】:Could not be performed exception using a socket to do a UDP Multicast无法使用套接字执行 UDP 多播执行异常
【发布时间】:2009-12-10 16:16:02
【问题描述】:

当运行我在 XP 上创建的 C# 应用程序时,它运行得很好,但在 Windows 7 下,我收到以下错误:

“无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满”

我正在做以下事情:

socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
IPAddress localIPAddr = IPAddress.Any;
EndPoint localEP = new IPEndPoint(localIPAddr, MulticastPort);
socket.Bind(localEP);
MulticastOption mcastOption = new MulticastOption(MulticastAddress, localIPAddr);

socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOption);

byte[] bytes = new Byte[40960];

错误发生在倒数第二行 socket.SetSocketOption(...)

您会注意到我正在执行 UDP 多播,我需要为 Windows 7 做些什么来允许这样做吗?

【问题讨论】:

标签: c# sockets windows-7 udp multicast


【解决方案1】:

IIRC,加入多播组确实需要额外的权限,因为您正在修改内核级表。我不记得这是什么特权。

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2010-11-22
    • 1970-01-01
    • 2022-11-09
    • 2014-12-21
    相关资源
    最近更新 更多