我正在编写一个python套接字客户端
message one
(例如Hello),每15秒发送message two
(例如15秒)我的意思是在不同的线程中进行发送和接收。然而,它仍然是阻止。 有没有人有建议?
线程#1
threading.Thread(target=Thread2, args=(sock)).start()
sock.recv(1024)
线程#2
def Thread2(sock):
count = 0
while True:
sleep(5)
count = count + 5
sock.send('Hello')
if count % 15 == 0
sock.send('15 seconds')
答案 0 :(得分:3)
它没有阻止。只是你的主线程在sock.recv(1024)
之后没有做任何事情。你必须告诉它不断收集数据:
MAIN THREAD
threading.Thread(target=Thread2, args=(sock,)).start()
while True:
data = sock.recv(1024)
if not data:
break
print data
请注意,您将无法轻松中断该过程。为此,您需要将线程设置为守护程序:
MAIN THREAD
t = threading.Thread(target=Thread2, args=(sock,))
t.daemon = True
t.start()
while True:
data = sock.recv(1024)
if not data:
break
print data
同样,当您通过args
时,请记住传递一个元组,即args=(sock,)
而不是args=(sock)
。对于Python args=(sock)
,相当于args=sock
。这可能是罪魁祸首!
我在代码中看不到更多问题。