2013-03-28 44 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);

希望解決您的問題。

相關問題