运行我在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做些什么来实现这一点?
答案 0 :(得分:0)
IIRC,加入多播组确实需要额外的权限,因为您正在修改内核级别表。我不记得它有哪些特权。