第一类
错误原因:发送http请求太过频繁,引起远程主机的怀疑,被网站怀疑是恶意攻击行为。
解决方法:
- 在发送命令之后关闭连接,防止被认为恶意连接
- 设置socket默认等待时间
设置读取信息的最大时间限制,如果超时的话程序将自动read下一项
socket.setdefaulttimeout(t)
# t设置得超时时间,以秒为单位
- 设置sleep()等待时间
让代码等待一段时间后继续运行,避免太过频繁地进行信息抓取
time.sleep(t)
#t设置等待时间,以秒为单位
第二类
- 确定是否是网络连接不稳定造成的,连接中断,再发送指令就会报这个错误
检查网络 - 请求超时原因
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
在socket之前设置文章来源:https://www.toymoban.com/news/detail-514388.html
socket.setdefaulttimeout(500)
- 远程主机强迫关闭一个现有连接
原因:
在网络开发使用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模板网!