0

当运行我在 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 做些什么来允许这样做吗?

4

1 回答 1

0

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

于 2009-12-10T16:31:42.207 回答