频繁发送socket命令返回:[WinError 10054] 远程主机强迫关闭了一个现有的连接

这篇具有很好参考价值的文章主要介绍了频繁发送socket命令返回:[WinError 10054] 远程主机强迫关闭了一个现有的连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一类

错误原因:发送http请求太过频繁,引起远程主机的怀疑,被网站怀疑是恶意攻击行为。
解决方法

  1. 在发送命令之后关闭连接,防止被认为恶意连接
  2. 设置socket默认等待时间
    设置读取信息的最大时间限制,如果超时的话程序将自动read下一项
socket.setdefaulttimeout(t)
# t设置得超时时间,以秒为单位
  1. 设置sleep()等待时间
    让代码等待一段时间后继续运行,避免太过频繁地进行信息抓取
time.sleep(t)
#t设置等待时间,以秒为单位

第二类

  1. 确定是否是网络连接不稳定造成的,连接中断,再发送指令就会报这个错误
    检查网络
  2. 请求超时原因
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

在socket之前设置

socket.setdefaulttimeout(500)
  1. 远程主机强迫关闭一个现有连接
    频繁发送socket命令返回:[WinError 10054] 远程主机强迫关闭了一个现有的连接
    原因:
在网络开发使用TCP协议实现客户端和服务端通信时,某些场合需要保持长连接,
但这并不容易。在默认情况下,超过一定时间没有数据收发操作时,连接会自动断开,从而导致数据丢失。

在创建socket之后建立心跳机制,间隔时间发送包以保证连接状态正常文章来源地址https://www.toymoban.com/news/detail-514388.html

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, True)
sock.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 60 * 1000, 30 * 1000))
# 括号参数
# 1:开启保活机制
#60 * 1000:一分钟如果对方还没有反应,就开始探测连接是否存在
#30 * 1000:60秒探测一次,默认探测10次,失败则断开

到了这里,关于频繁发送socket命令返回:[WinError 10054] 远程主机强迫关闭了一个现有的连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包