ZeroMQ - 从C#clrzmq发送 - 接收C ++消息空

时间:2016-08-01 03:01:51

标签: c# c++ zeromq

我在使用ZeroMQ使用clrzmq向C ++发送来自C#Web服务的消息时遇到问题。我用NuGet安装了clrzmq,我从C ++源代码创建了libzmq。

我在向C ++发送和从C ++接收时没有问题,但是,从C#发送到C ++的每条消息都是零大小的。

这是执行PUSH的C#代码。

var context = new ZMQ.Context(1);
var requester = Socket(ZMQ.SocketType.PUSH);
String connectionendpoint = "tcp://127.0.0.1:9997";
requester.Bind(connectionendpoint);

String testrequest = "TESTMESSAGE";
byte[] msg = Encoding.ASCII.GetBytes(testrequest);
SendStatus r = requester.Send(msg);
if (r == SendStatus.Sent)
{
       Console.WriteLine("Sent OK"); // <- Debugger arrives here with OK status
}

输出

Sent OK

这是C ++中的接收端

zmq::context_t context(1);
zmq::socket_t receiver(context, ZMQ_PULL);
int rc = zmq_connect(receiver, "tcp://127.0.0.1:9997");
std::cout << "Waiting for message " << std::endl;
zmq::message_t message;
bool success = receiver.recv(&message);
size_t msgsize = message.size();

std::cout << "Success " << success << std::endl;
std::cout << "Message Size " << msgsize << std::endl;

输出

Success 1
Message Size 0

我还尝试了以下从C#到C ++的Connect / Bind组合:

  • Bind - Connect

  • 连接 - 绑定

  • 连接 - 连接

  • Bind - Bind(失败,正如预期的那样。两者都无法绑定到同一个端口)

问。有什么明显的东西我错过了/做错了吗?

问。当邮件大小为零时,为什么发件人和收件人都报告成功传输而没有错误?

提前致谢。

编辑1:在查看与此类似的其他问题后,我检查了版本,clrzmq libzmq.dll版本是4.1.5.0,我从源码构建的C ++版本是4.2.1.0。我尝试对齐这些版本,但这没有效果。

0 个答案:

没有答案