2016-08-16 5 views
0

간단한 요청 - 응답을 사용하여 C# (클라이언트)와 python (서버)간에 대화 할 수 있습니다. 그러나 C# asp.net을 기반으로하는 웹 응용 프로그램을 안정적으로 만들고 더 많은 클라이언트와 서버가 필요하므로 확장 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

대신 파이썬에서 프록시를 실행하기로 결정했습니다. 그래도 고마워. :) – Oleole