今天写了一个用socket连接客户端与服务端脚本的脚本,主要功能是客户端给服务端发送命令,然后服务端执行,执行完后服务端给客户端返回执行结果。但是给我报错:
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
网上搜了一下报错的原因,说是请求超时了,需要添加一个超时参数timeout,在创建socket前设置:
socket.setdefaulttimeout(500)
设置完果然不报错了,小问题so easy。结果没高兴一会儿又给我报另一个错了!!!
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
继续网上找解决方案,结果很多都是说这是爬虫被服务器识别出来,服务端关闭了这个socket连接。但是这是我自己的服务器啊!我服务端的代码并没有关闭这个socket连接,为什么还会报这个错。
因为问题定位不清晰,网上搜了好久,终于找到了这篇博客:
Python+socket完美实现TCP长连接保持存活
在网络开发使用TCP协议实现客户端和服务端通信时,某些场合需要保持长连接,但这并不容易。在默认情况下,超过一定时间没有数据收发操作时,连接会自动断开,从而导致数据丢失。
原来如此!
客户端在创建socket之后,设置心跳:
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))
问题总算解决。如果你有什么问题,可以在评论区提问,我看到会回复。
python
socket
.
error
: [Errno
10054
]
远程
主机
强迫
关闭
了
一个
现有
的
连接
。问题解决方案:
前几天使用
python
读取网页。因为对
一个
网站大量的使用urlopen操作,所以会被那个网站认定为攻击行为。有时就不再允许下载。导致urlopen()后,request.read()一直卡死在那里。最后会抛出errno
10054
.
这个错误是
connection
reset
by peer.也就是传说的远端
主机
重置了此
连接
。原因可能是
socket
超时时间过长;也可能是request = urllib.request.urlopen(url)之后,没有进行request.cl
Traceback (most recent call last):
File "D:\eclipse\works\pytest\pytest\test\cytest.py", line 115, in <module>
pcres=urllib.request.urlopen(url)
File "D:\py3.8\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, tim...
出现问题描述及分析:
最近做爬虫是,经常出现
Connection
Reset
Error
: [
Win
Error
10054
] 等错误,主要是因为使用urlopen方法太过频繁,引起
远程
主机
的怀疑,被网站认定为是攻击行为,导致urlopen()后,request.read()一直卡死在那里,导致最后抛出
10054
异常。
具体解决办法:
1、设置sleep()等待一段时间后继续下面的操作【简单常用】
1
socket
的使用
1.1 TCP方法
在
socket
中使用
socket
.
socket
建立会话,如果是服务器,需要绑定服务器地址和端口号,然后进行循环监听,代码如下:
import
socket
def tcpServer(address,port=8686):
# stream代表tcp方式
server =
socket
.
socket
(
socket
.AF_INET,soc
现在电脑出现的问题是多种多样的,对小编而言,最简单有效的方式是用装机吧一键重装软件重装系统,这些问题可能是系统补丁的漏洞所在,下面我整理了
远程
主机
强迫
关闭
了
一个
现有
的
连接
原因的解决方法。一:在Android studio调试过程中会遇到上述问题,解决方法如下:(1)X打开终端窗口
win
+R查看5037端口都有哪些进程输入netstat -aon|findstr“5037”找出该进程输入taskli...
长篇文章对于没太多时间的朋友,我先给出解决方案,供尝试,有效可以回来点个赞,无效但有其它解决可以回来评论一下供他人参考
在启动jar时 添加 -Djava.security.egd=file:/dev/./urandom
开发中所用的数据需要通过WCF进行数据传输,结果就遇到了WCF大量传输问题 也就是提示System.Net.
Socket
s.
Socket
Exception:
远程
主机
强迫
关闭
了
一个
现有
的
连接
网上解决方案都是千篇一律互相转发的,并且没有明确的解决方案或者按照,各个博客中的解决方案都没能解决这个问题。
为此我整整浪费了一天时间用来解决这个问题,而且用了最笨的办法一点点的尝试网上所查到的方案。对于...
服务端与客户端建立
连接
后:第一:服务端建立后,与客户端进行bind,接受数据,接受数据完毕后,告知客户端传输结果;第二:客户端向客户端发送数据,使用
socket
.shutdownOutput()告知服务端,数据传输完毕;但是,当使用
socket
.shutdownOutput()后,再次读取服务端的返回信息时,
报错
“Exception in thread "main" java.io.IOExcep...