无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。

netstat -an

CLOSE_WAIT 状态表示正在等待关闭的连接的另一端,也就是对方主动关闭了连接,但是我方还没有完全关闭连接。这通常发生在 TCP 连接的断开过程中,当你的主机收到对方主动发起的 FIN(结束)包时,它的 TCP 状态会变成 CLOSE_WAIT

打开注册表 运行->regedit

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters目录下

增加一个MaxUserPort(默认值是5000,端口范围是1025至5000)MaxUserPort设置为65534(需重启服务器)

执行dos命令:

与上面操作结果一样,区别在于上面方法需要重启服务器,下面的不需要重启服务器。

netsh int ipv4 set dynamicport tcp start=1025 num=64510(不需要重启服务器)

增加一个TcpTimedWaitDelay(表示一个关闭后的端口等待多久之后可以重新使用,默认值为120)更改为30

TCP的KeepLive功能,可以让操作系统替我们自动清理掉CLOSE_WAIT的连接。

但是KeepLive在Windows操作系统下默认是7200秒,也就是2个小时才清理一次。往往满足不了要求。可以调小该数值。

Windows下的调整方法为

HKEY_LOCAL_MACHINE/CurrentControlSet/Services/Tcpip/Parameters下的以下三个参数:

KeepAliveInterval,设置其值为1000  

KeepAliveTime,设置其值为300000(单位为毫秒,300000代表5分钟)

TcpMaxDataRetransmissions,设置其值为5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿下山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值