使用套接字执行UDP多播时无法执行异常

时间:2009-12-10 16:16:03

标签: c# sockets windows-7 udp multicast

运行我在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做些什么来实现这一点?

1 个答案:

答案 0 :(得分:0)

IIRC,加入多播组确实需要额外的权限,因为您正在修改内核级别表。我不记得它有哪些特权。