2017-07-19 122 views
1

我是一名Python编程的初学者。我的问题是,我有一个处于侦听模式的TCP服务器,那时客户端会发送数据到服务器。但是当我的TCP服务器不可用时,我想要一个客户端去检查每次连接(例如使用while循环尝试异常方法)。让客户端连接保持活动状态

我试过技巧,但没有解决,它使o/p连接被拒绝,当我的TCP服务器不可用时。下面是我的代码帮助我一样。

# 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() 
+0

你形容一个完美的解决方案sensibe:捕获异常,那么你应该睡了一会儿,然后重试连接尝试。但是你并没有试图实现这一点,也没有描述你的实际的,详细的问题。 –

+0

我的问题是客户端代码应该每次检查连接,在我的代码中,它会检查5秒作为我的time.sleep(5)。 –

+0

@MeetAdhia:你没有尝试连接。相反,你期望连接成功,然后尝试发送。只有当TCP服务器不可用时,连接已经失败,这就是你得到的(连接被拒绝)并且无法捕获。 –

回答

0

我已经尝试了很多解决方案,但下面的代码适用于我。

client.py

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() 
相关问题