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++版本,并且我仍然得到相同的空消息。在
你需要发送缓冲区,而不是指针。在
当我测试你的代码的时候就成功了。在
希望这有帮助, 汉努
相关问题 更多 >
编程相关推荐