Python套接字异步发送和接收设计
我正在编写一个python套接字客户机Python套接字异步发送和接收设计,python,sockets,Python,Sockets,我正在编写一个python套接字客户机 每5秒发送一次信息(如Hello),每15秒发送一次信息(如15秒) 随时接收信息 我的意思是在不同的线程中进行发送和接收。然而,它仍在阻塞。 有人有什么建议吗 螺纹#1 螺纹#2 它不是阻塞。只是主线程在第一次sock.recv(1024)之后什么也不做。您必须告诉it部门不断收集数据: 主线程 threading.Thread(target=Thread2, args=(sock,)).start() while True: data = so
信息(如Hello),每15秒发送一次信息(如15秒)
它不是阻塞。只是主线程在第一次
sock.recv(1024)
之后什么也不做。您必须告诉it部门不断收集数据:
主线程
threading.Thread(target=Thread2, args=(sock,)).start()
while True:
data = sock.recv(1024)
if not data:
break
print data
t = threading.Thread(target=Thread2, args=(sock,))
t.daemon = True
t.start()
while True:
data = sock.recv(1024)
if not data:
break
print data
请注意,您将无法轻松中断该过程。为此,您需要将线程设置为守护进程:
主线程
threading.Thread(target=Thread2, args=(sock,)).start()
while True:
data = sock.recv(1024)
if not data:
break
print data
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
。这可能就是罪魁祸首
我看不到您的代码中有更多问题。如果您想要答案,请发布您编写的代码的相关部分。否则你会冒险把问题解决谢谢你的advice@Winston没有足够的代码。如何创建这些线程?我添加了套接字代码谢谢你的回答。我只知道python提供了一个名为asyncore/asynchat的模块。我可以用它来实现非阻塞I/O吗?@Winston为这个迟来的响应感到抱歉(不知为什么我错过了这个问题)。是的,您可以将其用于非阻塞I/O(我在工作中使用了asyncore)。