繁体   English   中英

为什么我在C#服务中收到此SocketException?

[英]Why am I getting this SocketException in my C# service?

我有一项服务,负责从服务器读取和写入。 读写是在不同的线程中完成的。

读取器线程始终处于活动状态,而写入线程仅激活以发送消息,并在消息写入服务器并收到响应后死亡。

该服务运行4天,之后,只要服务尝试从端口读取,我就会不断收到此错误:

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

当您非常快速地建立大量传出连接并耗尽本地端口时,就会发生这种情况。 您可以在这里阅读“短暂的端口范围”。

或者,您可能只是耗尽了套接字。 确保在使用完毕后关闭它们。

我还强烈建议你看看你的写线程,以及你如何引用与Socket相关的资源。 即,您是否正在为使用Socket的任何NetworkStream或其他对象调用Close / Dispose? 如果您仍然在努力解决问题,那么来自写入线程的代码示例将会很有帮助。

您可能还希望通过任务管理器监视进程内存并处理使用情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM