サーバーが接続を受け入れていなくても、クライアント側からサーバー側へと時間をかけて継続的に試みています。クライアント側で次の関数を作成しました。
def run(self):
print "running client"
start = datetime.now().second
while True:
try:
host ='localhost'
port = 5010
time = abs(datetime.now().second-start)
time = str(time)
print time
client = socket.socket()
client.connect((host,port))
client.send(time)
except socket.error:
pass
今、私は別のクラスの中にいます。その名前はloginGuiです。スレッドを使用して上記のグローバル関数を実行し、残りのクライアントコードの実行中にクライアントがサーバー側に時間を継続的にスローするようにします。だから私はクラスloginGui内に次のコードを書きました
class loginGui:
def run_client(self):
thread.start_new_thread(run,())
上記の関数run_client()を呼び出すと、スレッドは実行されますが、何らかの理由でループから抜け出し、時間をスローしなくなるため、この別のアプローチを試しました。
class FuncThread(threading.Thread):
def __init__(self, target, *args):
self._target = target
self._args = args
threading.Thread.__init__(self)
def run(self):
self._target(*self._args)
上記のクラスを作成してから、run_client()関数で次の変更を行いました。
def run_client(self):
t1 = FuncThread(run,())
t1.start()
t1.join()
run_client()を呼び出すと、スレッドが作成され、グローバル関数run()が呼び出されますが、問題は、whileループで発生し、時間をスローし続けることです。
結論:私が基本的に望んでいるのは、関数runを呼び出し、whileループに巻き込まれることなく時間をスローし続けるスレッドを作成することです。