由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作

转自:http://blog.csdn.net/s_nuclear/article/details/25898597

C#注册表操作:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html

异常信息:

System.NET.Sockets.SocketException (0x80004005): 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 192.168.0.187:22

   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
   at Tamir.SharpSsh.java.net.Socket..ctor(String host, Int32 port)
   at Tamir.SharpSsh.jsch.Util.createSocket(String host, Int32 port, Int32 timeout)

错误描述:

服务器上部署有  WebService、处理服务:WebService有客户端轮询调用;处理服务也轮询数据库,进行相关处理后上传文件到SFTP上。


解决方法:

修改两个注册表:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort  如果没有,则手动创建 DWord(32位)  ”数值数据“改为十进制65534 或者认为适当的值。

此值表示 用户最大使用的端口数量,默认为5000。


HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\TCPTimedWaitDelay 如果没有,则手动创建 DWord(32位)  ”数值数据“改为十进制30 或者你认为适当的值。

此值表示一个关闭后的端口等待多久之后可以重新使用,默认为120秒,也就是2分钟才可以重新使用。


你可能感兴趣的:(C#)