.net c#zeromq请求同时回复

时间:2014-01-28 17:37:19

标签: c# .net zeromq

我对ZeroMq相对较新。

我想要做的是同时发送请求和接收回复。 我阅读了很多例子和ZeroMq指南,但我不知道如何实现这一点。

目前我的代码看起来是这样的:

public void SendRequestAsync<T>(T request)
  {
     Task.Factory.StartNew(() =>
     {
        using (ZmqSocket socket = _context.CreateSocket(SocketType.REQ))
        {
           string endPoint = string.Format("tcp://{0}:{1}", ServiceIpAddress, Port);
           socket.Connect(endPoint);

           var serializer = new XmlSerializer(request.GetType());

           using (var byteStream = new MemoryStream())
           {
              serializer.Serialize(byteStream, request);
              socket.Send(byteStream.ToArray());
           }
        }
     });

     if (!_isListening)
     {
        StartListeningForReplies();
     }
  }

  private void StartListeningForReplies()
  {
     _responseThread = new Thread(ReplyThreadStart);
     _responseThread.Start();

     _isListening = true;
  }

  private void ReplyThreadStart()
  {
     using (var replySocket = _context.CreateSocket(SocketType.REQ))
     {
        string endPoint = string.Format("tcp://*:{0}", Port);
        replySocket.Bind(endPoint);

        while (!_listeningAborted)
        {
           byte[] buffer = new byte[1024];
           replySocket.Receive(buffer);

           // put into queue for processing
        }
     }
  }

我之前创建了一个上下文,并使用此上下文创建套接字。

我是否需要使用不同的端口进行发送和接收,还有另一个端口用于发布?

请帮忙。

0 个答案:

没有答案