在一个linux 群里,有人问:select写socket时候 建立链接立马发送数据有时候收不到数据 还提示10054 百分之八十的情况还是能收到的 一般收不到数据的时候 第二次再链接发送数据就能收到 请问是怎么回事呢?

对于好奇心极强的我,对于这个没遇到的问题,我就百度了10054错误。网上说:

一般来说是连接被对方重设。一个建立的连接被远程主机强行关闭,若远程主机上的进程异常终止运行(由于内存冲突或硬件故障),或者针对套接字执行了一次强行关闭,便会产生10054错误。针对强行关闭的情况,可用SO_LINGER套接字选项和setsockopt来配置一个套接字。

而对于 群里描述的那个问题,我回忆了 TCP/IP 协议,我认为会有如下两种情况:

(1)client 在与 server 进行三次握手时,client 调用 connect 函数完成了连接的建立(客户端自以为建立了),而实际server 那边却没有收到最后一次握手 ack 的回复。这时触发了 server 的 syn 触发器,重发 SYN+ACK 包,一般默认是重发 5次,时间分别是 1秒、2秒、4秒、8秒、16秒;而此时client 马上发送数据的话,server 会发 RST 回复给 client, 那么此时 client 就会提示 10054。

(2)而另一种情况就是 server 这边的 accept 队列满了(一般有 syn_recv 队列,accept队列),那么此时 server会直接回复RST(最新的 linux 内核是这么实现的),当然也有可能会拒绝 client的请求,让 client自己自动断开请求。

群里的一位大神(冒泡)说实现第二种方式,也就是拒绝 client发过来的请求,原因如下:

第一,服务器已经处理不过来了,再发rst加剧压力
        第二,客户端如果丢包,会等到超时再重试,而收到rst的话有可能立刻重试,服务器压力会更大

客户端时不时接收到10054错误相关推荐

  1. [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误

    2G环境下资源下载有一定概率失败,客户端日志显示收到403错误 问题现象: 测试同学在使用联通号码在移动网络环境下,访问连接得到的response_code出现是403,导致资源读取失败表情显示异常. ...

  2. socket error 10054错误出现的原因以及解决办法,全网最全没有之一

    套接字是客户端-服务器通信的端点. FTP socket error 10054指示远程主机已强制终止或重置FTP客户端的现有连接.并且,用户看到完整的错误消息,如下所示. Upload failed ...

  3. 解决UDP出现的10054错误

    问题描述如下: 一个机器A有两个IP 一个是内网的 一个是外网的 有用UDP写的C/S的程序 S放在A上 我的机器在内网 当我用内网IP通讯时 A能接收到数据并且A也能把接收到的数据返回 当我用外网I ...

  4. spss连接至远程计算机,通过远程连接打开SPSS产品时,收到许可证错误信息。从本地打开同一产品时没有错误。...

    Problem 在一个服务器类型的机器上安装了单机版或站点版许可证客户端.在服务器端打开客户端时,产品可以正常使用.如果通过远程连接(比如,RDP/Terminal Services/Citrix)打 ...

  5. socket error 10054错误出现的原因及解决办法,全网最全没有之一

    套接字是客户端-服务器通信的端点. FTP socket error 10054指示远程主机已强制终止或重置FTP客户端的现有连接.并且,用户看到完整的错误消息,如下所示. Upload failed ...

  6. 如何解决访问Windows Update网站时收到0X8024001D错误信息

    现象: 当您尝试访问Windows Update网站时收到0X8024001D错误信息. 解决方案: 打开[开始]-[运行],输入"services.msc",打开[服务(本地)] ...

  7. Socket程序中的Error#10054错误

    近期使用winSock做的一个网络项目中,使用TCP+Socket连接编写的一个多线程的网络程序,功能是client负责不断地向server端发送数据,服务端负责接收数据.client是一个DLL,服 ...

  8. 解决 Outlook 2007 客户端下载 OAB 时的错误 0x8004010F

    解决 Outlook 2007 客户端下载 OAB 时的错误 0x8004010F 请参考:[url]http://technet.microsoft.com/zh-cn/library/cc4113 ...

  9. scrapy爬虫 出现10054错误 远程主机强迫关闭了一个现有的连接

    ** 解决:python爬虫 出现10054错误 远程主机强迫关闭了一个现有的连接 ** 问题: 1,网络问题. 确定是否是本机或爬虫目标网站出现网络问题 2,单位时间内请求页面频率过高 3,网站监测 ...

最新文章

  1. js 调用 jsp注意点
  2. 1016. 部分A+B (15)
  3. 可执行文件组成及内存映射
  4. 算法 --- 归并排序的js实现
  5. final 在 java 中有什么作用?
  6. android字符串显示textview,Android编程:TextView不显示完整字符串
  7. Cmake构建_选择debug与release的库
  8. FileExplorer手机访问电脑文件
  9. 关于微信公众号音频批量爬虫
  10. java生成树型思维导图,Android树形控件绘制方法
  11. hive新功能 Cube, Rollup介绍
  12. 解决用友固定资产出现的“不能月末结账,可能月末未结账”的处理办法
  13. C语言中统计英文单词的个数
  14. [附源码]Python计算机毕业设计城市旅游景点门票订购系统
  15. ADASISv3简述,自动驾驶怎么进行地图数据传输?
  16. americdan-life
  17. Android---简易Snackbar
  18. 2022-07-11 Python TCP服务器与客户端
  19. Kaggle亚马逊比赛冠军专访:利用标签相关性来处理分类问题
  20. 用java输出自己的名字_java 实现输出姓和名

热门文章

  1. php语言的应用领域,探讨主要的PHP应用领域
  2. linux手动安装rsync_在Linux/Unix上安装rsync并通过示例的方式介绍使用rsync命令
  3. Unity(一)入门:Unity Hub下载 Unity安装
  4. 关于android系统的介绍
  5. #PCIE# 8b/10b 编码
  6. 冯米塞斯应力计算的各种形式
  7. AR+LBS线下社交游戏尝试
  8. 十进制浮点数的表示方法
  9. 系列解读Dropout
  10. fstream、ifstream、ofstream创建新文件