1

我在 zeromq 中有一个客户端服务器对。奇怪的是,拉取客户端只接收所有其他发送的消息。这是我的实现

## Push Server
import zmq

def post():
    context = zmq.Context()
    socket = context.socket(zmq.PUSH)
    socket.bind("tcp://127.0.0.1:3333")
    socket.send("hello")
    socket.close()

if __name__ == "__main__":
    post()

## Pull client
def read():
    context = zmq.Context()
    content = context.socket(zmq.PULL)
    content.connect("tcp://127.0.0.1:3333")

    while True:
        print content.recv()
        if content.recv() is "0":
            sys.exit()

if __name__ == "__main__":
    read()

为什么 read() 只接收所有消息的一半?

4

1 回答 1

1

每次调用 content.recv() 时都会收到一条新消息。这是一个用于 print 语句,另一个用于 if 子句。改为将消息读入局部变量。作为旁注,使用'==',而不是'is'进行比较。

while True:
    msg = content.recv()
    print msg
    if msg == "0":
        sys.exit()
于 2013-07-11T23:38:03.567 回答