2013-03-27 71 views
1

場景:一旦Node.js服務器具有在tcp://127.0.0.1:2202上偵聽的ZeroMQ拉。數據必須由C#控制檯應用程序發送。如何使用包管理器控制檯爲控制檯c#應用程序安裝clrzmq?

問題:
Example Reference

using System; 
using System.Text; 
using ZMQ; 

namespace ZMQGuide 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // ZMQ Context and client socket 
      using (ZmqContext context = ZmqContext.Create()) 
      using (ZmqSocket client = context.CreateSocket(SocketType.PUSH)) 
      { 
       client.Connect("tcp://127.0.0.1:2202"); 

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

        string reply = client.Receive(Encoding.Unicode); 
        Console.WriteLine("Received reply {0}: {1}", requestNum, reply); 
       } 
      } 
     } 
    } 
} 

是給出以下錯誤:

Error 1 The type or namespace name 'ZmqContext' could not be found (are you missing a using directive or an assembly reference?) D:\..\Program.cs 26 24 PROJECTA 

信息:我試圖通過發出命令PM> Install-Package clrzmq 安裝使用程序包管理器控制檯,最新版本命令後輸出:

'clrzmq 2.2.5' already installed. 
Successfully added 'clrzmq 2.2.5' to PROJECTA. 

問題:誰能告訴我,我要去的地方錯還是我缺少什麼?


更新:我有 downloaded和嘗試,但沒有運氣:-)

提前感謝很大的幫助

回答

2

我可以重現您的問題。我認爲這是可能因爲文檔有點過時,但是這似乎是建立我:

using ZMQ; 

namespace TestConsole 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // ZMQ Context and client socket 
      using (Context context = new Context()) 
      using (Socket client = context.Socket(SocketType.PUSH)) 
      { 
       client.Connect("tcp://127.0.0.1:2202"); 

       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); 
       } 
      } 
     } 
    } 
} 

我沒有ZeroMQ或任何運行的實際檢查,它的作品,但也許你可以給它一槍?

+0

沒有運氣:-('錯誤類型或命名空間名稱「ZeroMQ」找不到(是否缺少我們ing指令或程序集引用?)\t D:\ .. \ Program.cs ProjectA' – 2013-03-28 06:44:52

+0

對不起,這...我只是從NuGet拖下來的包,並試圖讓事情運行。已經更新了我的回答(對於我來說)(至少是爲了讓它建立舞臺) – nkvu 2013-03-28 06:53:39

+0

感謝您的幫助..我登陸這個,但對我來說現在的問題是在服務器端(上面的代碼是客戶端)。 '未處理的異常:ZMQ.Exception:ZMQ.Socket.Send(Byte []消息,Int32 startIndex,Int32長度,SendRecvOpt []標誌)不受支持' – 2013-03-28 07:04:23

2

從我的經驗,得到clrzmq的最新版本(3.0)(ZeroMQ)我需要的 「-Version」 選項添加到程序包管理器調用是這樣的:

PM>Install-Package clrzmq -Version 3.0.0-rc1

此外,使用「使用」 3.0時是ZeroMQ,而不是ZMQ:

using ZeroMQ;