4

我正在编写一个 python 套接字客户端

  1. 每 5 秒发送一次message one(例如 Hello),每15 秒发送一次message two(例如 15 秒)
  2. 随时接收消息

我的意思是在不同的线程中进行发送和接收。但是,它仍然处于阻塞状态。有人有建议吗?

线程#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')
4

1 回答 1

3

它没有阻塞。只是你的主线程在 first 之后什么都不做sock.recv(1024)。您必须告诉它不断收集数据:

主线

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. 这大概就是罪魁祸首吧!

我在您的代码中看不到更多问题。

于 2013-03-14T16:38:06.233 回答