2016-08-16 14 views
0

私はc#(クライアント)とpython(サーバ)が単純なリクエスト - リプライを使って話をすることができました。しかし、私はC#asp.net上に構築されたWebアプリケーションを安定させ、より多くのクライアントとサーバーが必要なので、拡張REQ-REP接続を使用してC#とPythonを接続しようとしました。NetMQ拡張リクエスト - C#とPythonを使用した返信

しかし、以下のコードを実行すると、ブローカーとしての仕事は行われず、何も出力されません。私はここで間違って何をしていますか?

5600 = C#クライアント

5601 =パイソンサーバ

using (var frontend = new RouterSocket("@tcp://127.0.0.1:5600")) 
         using (var backend = new DealerSocket("@tcp://127.0.0.1:5601")) 
         { 
          // Handler for messages coming in to the frontend 
          frontend.ReceiveReady += (s, p) => 
          { 
           var msg = p.Socket.ReceiveFrameString(); 
           backend.SendFrame(msg); // Relay this message to the backend 
          }; 

          // Handler for messages coming in to the backend 
          backend.ReceiveReady += (s, p) => 
          { 
           var msg = p.Socket.ReceiveFrameString(); 
           frontend.SendFrame(msg); // Relay this message to the frontend 
          }; 

          using (var poller = new NetMQPoller { backend, frontend }) 
          { 
           // Listen out for events on both sockets and raise events when messages come in 
           poller.Run(); 
          } 
         } 

答えて

0

あなたは正しいフラグで、すべてのメッセージフレームを送信していません。

netmqのユーザープロキシを試してみることもできます。

https://github.com/zeromq/netmq/blob/master/src/NetMQ/Proxy.cs

更新:あなたはまだプロキシが、ここで正しいフレームフラグでそれを行う方法を見てみましょう手でそれを書きたい場合は

次のプロキシを使用する方法の例です。あなたのケースで:

using (var frontend = new RouterSocket("@tcp://127.0.0.1:5600")) 
using (var backend = new DealerSocket("@tcp://127.0.0.1:5601")) 
{ 
    using (var poller = new NetMQPoller { backend, frontend }) 
    { 
     var proxy = new Proxy(frontend, backend, null, poller); 
     proxy.Start(); 
     proxy.Run(); 
    } 
} 

またポーラーせずに、それを使用することができます。

using (var frontend = new RouterSocket("@tcp://127.0.0.1:5600")) 
using (var backend = new DealerSocket("@tcp://127.0.0.1:5601")) 
{  
    var proxy = new Proxy(frontend, backend); 
    proxy.Start();   
} 
+0

あなたが共有したリンクでは、フロントエンドとバックエンドポートを指定するコードがないため、Routher-Dealerのキャプチャソケットの後にnetmqのプロキシを単に追加することができるようです。 – Oleole

+0

私はあなたのコメントを理解していないと思いますが、とにかく私はコード例を追加しました。それは役に立ちますか? – somdoron

+0

代わりにpythonでプロキシを実行することに決めました。あなたの助けを借りてありがとうございます:) – Oleole

関連する問題