为什么ZeroMQ reqrep给我一个空的C++与Python之间的响应?

2024-09-29 23:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用PrimoQ在Python客户端和基于C++的服务器之间架桥,但我正在努力从服务器返回给客户端的正确响应。在

Python客户端如下所示:

import zmq
import time

# Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.REQ)

socket.connect ("tcp://127.0.0.1:5563")

requestId = 0
while True:
    request = "Message %d"%requestId
    print ("Sending '%s'.. "%request)
    socket.send_string(request)

    response = socket.recv()
    print ("Response:",response)

    requestId += 1
    time.sleep(1)

C++服务器看起来像这样:

^{pr2}$

运行此程序时,客户端报告:

Sending 'Message 0'..

服务器报告:

Got request: Message 0

Responding with: Message 0 response

但是python收到一条空白消息:

Response: b''

如果用C++实现Python版本,则按预期运行:

import zmq

context = zmq.Context()
socket = context.socket(zmq.REP)

socket.bind ("tcp://127.0.0.1:5563")

replyId = 0
while True:
    request = socket.recv_string()
    print("Received: "+request)

    response = request+" response %d"%replyId
    print ("Sending response: "+response)
    socket.send_string(response)
    replyId += 1
<>我在C++版本中做了什么错误?在

更新-检查过的版本…

在阅读别人的问题时,有一件事人们认为不同的版本有时会引起问题。我重复检查,Python使用V4.1.6,而C++是V4.0.4。在

我使用C++预构建库:http://zeromq.org/distro:microsoft-windows,我想这可能是原因吗?我也做了类似的设置,从C++到Python,这很好,但是Req ReP区域中的某些东西已经改变了。在

更新2-似乎不是版本…

<> P>在大量的黑客攻击之后,我终于成功地获得了V4.1.6来构建服务器的C++版本,并且我仍然得到相同的空消息。在


Tags: import版本服务器客户端messagestringresponserequest

热门问题