这里的异常为,我tcp客户端绑定了一个 端口为 4440, 通过这个端口连接到服务端后,程序又一次调用了连接,这时报出了 套接字地址(协议/网络地址/端口)只允许使用一次 这个错误 参考博客 这里我们通过 python 中的 try方法,对该异常进行捕获,并判断
报错:
Exception in thread Thread-1:
Traceback (most recent call last):
File "F:/cv_rebort_python3/Inspection_Robot/Motor_Can/Client_Motor_Control.py", line 102, in link
self.client.connect((self.HOST, self.PORT))
OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
修改思路,通过try方法,将 OSError 异常(错误)存储到 e 中,注意这时的 e 是 <class ‘OSError’> 类型,这时如下,我们可以通过 e.errno 输出该异常的 int类型的异常(错误)编号,即 10048,或者 e.args输出 一个元组信息,具体如下输出
try:
os.rmdir("test2")
except OSError as e:
print ("出错,等待进一步处理")
print ("你出的错误是:{0}".format(e))
file = open("error.txt","a+")
file.write(str(e))
file.close()
实际代码:
while True:
try:
self.client = socket(AF_INET, SOCK_STREAM)
self.client.bind(('', 4440))
self.client.connect((self.HOST, self.PORT))
print("成功连接客户端,开启监听线程......")
self.limit_bool = True
except OSError as e:
print("eeeeeee")
print(e.args)
print(e.errno)
print(type(e.errno))
print(e.filename)
print(e.strerror)
print(e.filename2)
print(type(e))
print(str(e))
if str(e) == "[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。":
print("ok!@")
输出:
eeeeeee
(10048, '通常每个套接字地址(协议/网络地址/端口)只允许使用一次。', None, 10048, None)
10048
<class 'int'>
None
通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
None
<class 'OSError'>
[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
ok!@
Exception in thread Thread-1:
Traceback (most recent call last):
File "F:/cv_rebort_python3/Inspection_Robot/Motor_Can/Client_Motor_Control.py", line 102, in link
self.client.connect((self.HOST, self.PORT))
OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
|