我在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()只接收所有消息的一半?
答案 0 :(得分:1)
每次调用content.recv()时都会收到新消息。这是print语句的一个,if子句的另一个。请将消息读入本地变量。作为旁注,请使用'==',而不是'是'进行比较。
while True:
msg = content.recv()
print msg
if msg == "0":
sys.exit()