2013-03-28 107 views
2

方案如何将数据从C#推送到ZeroMQ并从Node.JS拉出,反之亦然?

我试图通过ZeroMQ从C#сonsole应用程序发送数据(比如String类型)的node.js服务器。

信息:

使用C#和ZeroMQ库为C#和Node.js的clrzmq分别

我能够从Node.js的执行push-pull,也push - 从C#pull

所以,有一件事是证实ZeroMQ - The Intelligent Transport Layer被安装在机器上(Windows 7的64位)

问题

我无法从C#控制台应用程序数据推送到节点。 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); 
      } 
     } 
    } 
} 

问题:谁能告诉我可能是什么原因或者我做错了什么?

+0

问题**不应该是关于该主题的常见问题解答。没有项目主页和维基百科链接是必要的。谢谢你的理解。干杯! – abatishchev 2013-03-29 01:48:46

回答

1

我有同样的问题(但我发出了沟通Node.JS - > Node.JS)。为了解决这个问题,我曾在发件人处做过sendersocket.connect("tcp://"+host+":"+port);,在接收人处做过receiversocket.bindSync("tcp://*:"+port);

希望解决您的问题。

相关问题