我正在使用Python构建一个TCP客户端,它应该尝试连接到服务器,直到建立连接或程序关闭。 我在阻塞套接字上定义了超时,但在第一次尝试连接后我收到了
BlockingIOError: [Errno 114] Operation already in progress
这是一个小代码示例:
import socket
TCP_IP = '192.168.1.10'
TCP_PORT = 7
class TcpClient:
def __init__(self):
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.settimeout(5)
def connect(self):
self.s.connect((TCP_IP, TCP_PORT))
if __name__ == "__main__":
client = TcpClient()
while True:
try:
client.connect()
except socket.timeout:
pass
如果我正确理解python文档,则在连接尝试失败时应该发生超时。这意味着套接字不再尝试建立连接,但它似乎仍然存在。
我也试图关闭套接字,但是我需要为每次新的连接尝试创建一个新的套接字。我无法相信这是一个完美的解决方案。
我愿意就此问题提出任何建议或帮助。 谢谢!