我正在研究一个基本的套接字客户端程序在Python中,我不完全确定如何处理异常。这是我到现在为止所做的:Python套接字编程 - 异常处理
TCP_IP = '..............'
TCP_PORT = 4950
MESSAGE = "o3"
BUFFER_SIZE = 2048
data = ""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5.0)
try:
s.connect((TCP_IP, TCP_PORT))
except socket.error:
#write error code to file
s.close()
try:
s.sendall(MESSAGE)
except socket.error:
#write to file or whatever
s.close()
try:
data = s.recv(BUFFER_SIZE)
except socket.error:
#write to file or whatever
s.close()
finally:
s.close()
该代码工作正常,但我不确定是否应该嵌套try/catch块吗?我应该把socket.socket
放入try/catch块吗?
第二个问题,s.settimeout()
在我的情况下会做什么?据我了解的文件,它会在5秒后抛出异常,但为什么?只是connect
还是会这样做sendall
和recv
?
谢谢你这个伟大的答案!还有一个问题,当我使用原始版本(try/catch块一个接一个地)并且异常被socket.connect()捕获时会发生什么?我猜所有套接字操作都被执行了,这是不好的? –