Python 保持客户端连接处于活动状态
我是python套接字编程的初学者。我的问题是,我有一个TCP服务器处于侦听模式,此时客户端将向服务器发送数据。但当我的TCP服务器不可用时,我希望客户端每次都去检查连接(类似于使用while循环尝试异常方法) 我尝试过一些技巧,但没有成功,当我的TCP服务器不可用时,它会提供类似o/p的连接被拒绝。下面是我的代码,请帮我做同样的事情Python 保持客户端连接处于活动状态,python,python-2.7,sockets,tcp,Python,Python 2.7,Sockets,Tcp,我是python套接字编程的初学者。我的问题是,我有一个TCP服务器处于侦听模式,此时客户端将向服务器发送数据。但当我的TCP服务器不可用时,我希望客户端每次都去检查连接(类似于使用while循环尝试异常方法) 我尝试过一些技巧,但没有成功,当我的TCP服务器不可用时,它会提供类似o/p的连接被拒绝。下面是我的代码,请帮我做同样的事情 # client.py import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM
# client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 2195
s.connect((host, 2195))
while 1:
try:
print "Try loop"
s.sendall("Welcome to Python\r\n")
print "Try loop2"
time.sleep(5)
except:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.close()
我已经尝试了很多解决方案,但下面的代码对我很有用 client.py
我已经尝试了很多解决方案,但下面的代码对我很有用 client.py
您描述了一个完美的sensibe解决方案:捕获异常,然后休眠一段时间,然后重试连接尝试。但你没有尝试实现这一点,也没有描述你实际的详细问题。我的问题是客户端代码应该每次都检查连接,在我的代码中,它会检查5秒作为我的时间。睡眠(5)。@MeetAdhia:你没有尝试连接。相反,您希望连接成功,然后尝试发送。只不过,如果TCP服务器不可用,连接将已经失败,这就是您得到的(连接被拒绝)和无法捕获的结果。您描述了一个完美的sensibe解决方案:捕获异常,然后您应该休眠一段时间,然后重试连接尝试。但你没有尝试实现这一点,也没有描述你实际的详细问题。我的问题是客户端代码应该每次都检查连接,在我的代码中,它会检查5秒作为我的时间。睡眠(5)。@MeetAdhia:你没有尝试连接。相反,您希望连接成功,然后尝试发送。仅当TCP服务器不可用时,连接就会失败,这就是您得到的(连接被拒绝)和无法捕获的结果。
import socket
import time
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
host = socket.gethostname()
port = 2195
try:
s.connect((host , port))
s.sendall("Welcome to Python\r\n")
except:
print "Error"
time.sleep(5)
s.close()