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

Pav*_*ara 22 .net c# sockets windows-7

我在C#中编写了一个IP多播应用程序.编译很好,但在运行时这行:

sock.SetSocketOption(SocketOptionLevel.IP,
                     SocketOptionName.AddMembership,
                     new MulticastOption(IPAddress.Parse("224.100.0.1")));
Run Code Online (Sandbox Code Playgroud)

抛出未处理的套接字异常:

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

我搜索了Google中的错误,人们建议删除可能已启用的3GB开关(我的操作系统是Windows 7).我做到了,但仍然得到同样的错误.可能是什么问题?

nat*_*and 8

这似乎发生在资源(套接字?)或内存耗尽时.在命令提示符下运行:netstat -ab

我不确定套接字限制是什么.我现在正在和这样的问题打架.

有关套接字限制的说明:http: //support.microsoft.com/kb/196271


Mic*_*ael 7

它可能是端口耗尽.当应用程序在短时间内创建过多的传出连接或者没有正确配置传出连接时 - 您的端口用完了.

以下是相当冗长的解释和诊断问题的方法的链接


ta.*_*.is 5

如果超出资源限制,您可能会遇到此错误消息。一个System.Net.Sockets.Socket实现IDisposable。使用完插座后,您是否将其处理掉?

将它们留给垃圾收集器是泄漏资源的绝佳方式。

  • 我在使用 HTTP 帖子时遇到了同样的问题。快速连续执行大量操作似乎会使 IIS 过载,即使我使用 `using` 正确处理它们。想法? (3认同)
  • http://smallvoid.com/article/winnt-tcpip-max-limit.html 也可能有助于解释操作系统施加的限制。 (2认同)