c# - 如何将数据从C#推送到ZeroMQ并从Node.JS提取,反之亦然?

场景:

我正在尝试通过ZeroMQ将数据(例如String类型)从C#сonsole应用程序发送到Node.JS服务器。

信息:

将clrzmq分别用于C#和ZeroMQ库,分别用于C#和Node.JS

我可以从Node.JS执行push-pull,也可以从C#执行push-pull

因此,确认一件事是计算机上已安装ZeroMQ - The Intelligent Transport Layer(Windows 7 64位)

问题:

我无法将数据从C#控制台应用程序推送到Node.JS应用程序(甚至尝试将其反之),它们都在同一台计算机上,并且在同一地址上,即tcp://127.0.0.1:2222

Node.js代码:

var zmq = require('zeromq.node');
var pull_socket = zmq.socket('pull');    
pull_socket.connect('tcp://127.0.0.1:2222');    
pull_socket.on('message', function (data) {
    console.log('received data:\n');
    console.log(data);
});


C#代码:

namespace DataServiceEngine
{
    class Program
    {
        static void Main(string[] args)
        {
            //clsApp App = new clsApp();
            //App.appId = "001";
            //App.name = "Back Office";

            //Console.WriteLine("appId :" + App.appId + "\n");
            //Console.WriteLine("name:" + App.name + "\n");

            try
            {
                // ZMQ Context and client socket
                using (var context = new Context(1))
                {
                    using (Socket client = context.Socket(SocketType.PUSH))
                    {
                        client.Connect("tcp://127.0.0.1:2222");

                        string request = "Hello";
                        for (int requestNum = 0; requestNum < 10; requestNum++)
                        {
                            Console.WriteLine("Sending request {0}...", requestNum);
                            client.Send(request, Encoding.Unicode);

                            string reply = client.Recv(Encoding.Unicode);
                            Console.WriteLine("Received reply {0}: {1}", requestNum, reply);
                        }
                    }
                }
            }
            catch (ZMQ.Exception exp)
            {
                Console.WriteLine(exp.Message);
            }
        }
    }
}


问题:有人可以告诉我原因是什么或我在哪里做错了?

最佳答案

我遇到了同样的问题(但是我发布了一个通信Node.JS-> Node.JS)。为了解决该问题,我以前在发送方执行sendersocket.connect("tcp://"+host+":"+port);,在接收方执行receiversocket.bindSync("tcp://*:"+port);

希望这能解决您的问题。

本文翻译自 https://stackoverflow.com/questions/15676617/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# node.js client-server zeromq


相关文章:

c# - 如何保持控制台窗口打开

c# - 如何使用设备查找所有进程

c# - 为什么在结构中添加额外的字段会大大提高其性能?

c# - 在连接字符串密码中使用非ASCII字符

c# - 二维数组中的闭合路径

c# - ASP.Net vNext App_Data文件夹

c# - SharpZipLib压缩字符串

c# - 如何在SQLite中将事务隔离级别设置为ReadUncommitted?

c# - mvvm light Messenger.Default.Register在后面查看代码?

c# - System.DirectoryServices.Interop.UnsafeNativeMethods.IAds.GetInfo()上的FileNotFoundException