[英]Why a ZeroMQ Server does not receive any requests from Client?
我在MQL4
中设置了 ZeroMQ 服务器(类似于 c++ 的语言),在 Python 中设置了 ZeroMQ 客户端。 由PUSH/PULL
-sockets 构成的连接运行良好,但是当我尝试使用REQ
-socket 从 Python 向 ZeroMQ REP
-socket 发送请求时,它什么也收不到。 这是 Python 代码:
reqSocket.connect( "tcp://locahost:%d" % REQ_PORT )
jsonMsg = json.dumps( requestMessage )
socket.send_string( jsonMsg )
print( "Sent a message" )
response = socket.recv()
print( "received a message" )
这是MQL4
代码:
repSocket.bind( StringFormat( "%s://%s:%d",
ZEROMQ_PROTOCOL,
HOSTNAME,
REP_PORT
)
);
repSocket.recv( request, true );
if( request.size() > 0 ) {
string reply = MessageHandler( request );
Print( reply );
repSocket.send( reply );
}
我毫不怀疑 sockets 连接正确,因为我有PUSH/PULL
sockets 以相同的方式连接并且工作正常。
问: “为什么ZeroMQ 服务器没有收到来自客户端的任何请求?”
因为源代码没有发送任何:
reqSocket.connect( "tcp://locahost:%d" % REQ_PORT )
#^^^^^^^^._____________________________________________________SOCKET.connect()-s
jsonMsg = json.dumps( requestMessage )
pass; socket.send_string( jsonMsg ); print( "Sent" )
response = socket.recv();
# ^^^^^^.____________________________________other_one_.{send|recv}()-es
socket.send_string( jsonMsg )
。 这不是发送请求吗? BTWsocket = reqSocket
(作为function中的变量传递,所以这不是问题) – 1 小时前
@blend如果您对未在 MCVE 中发布的信息进行争论,您可能会鄙视那些赞助他们的时间和知识来帮助您的人。 对于这个社区来说,这是一种反模式,与站点文化完全相反。
下一个候选者——如果一个socket
对象实际上是一个秘密重新修饰的reqSocket
:
也许, .connect()
方法应该被调用时更加小心,
使用"tcp://locaLhost:%d" % REQ_PORT
,不是吗?
完全准备好听到,您的 DNS 表已经设置并处于活动状态,可以顺利地将
locahost
符号主机名转换为localhost
和许多其他符号名称,
就在太平洋的这一边,似乎很明显,至少到目前为止
:o)
我的代码:
Context *context;
Socket *rec;
string ZEROMQ_PROTOCOL = "tcp";
string HOSTNAME = "127.0.0.1";
#define REP_PORT 55555
...
context=new Context(); // <-- mayby u a forget
rec= new Socket(context,ZMQ_REQ);
rec.setReceiveTimeout(500);
cConnect = StringFormat( "tcp://%s:%s",HOSTNAME,REP_PORT);
rec.connect(cConnect);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.