public void StreamToStream() { using (NetMQContext context = NetMQContext.Create()) { using (var server = context.CreateStreamSocket()) { server.Bind("tcp://*:5557"); using (var client = context.CreateStreamSocket()) { client.Connect("tcp://127.0.0.1:5557"); byte[] id = client.Options.Identity; client.SendMore(id).Send("GET /\r\n"); id = server.Receive(); string message = server.ReceiveString(); Assert.AreEqual(message, "GET /\r\n"); string response = "HTTP/1.0 200 OK\r\n" + "Content-Type: text/plain\r\n\r\n" + "Hello, World!"; server.SendMore(id).Send(response); id = client.Receive(); message = client.ReceiveString(); Assert.AreEqual(message, response); } } } }
protected void CreateServer() { switch (_type) { case MQServerType.Response: _serverSocket = _context.CreateResponseSocket(); break; case MQServerType.Publisher: _serverSocket = _context.CreatePublisherSocket(); break; case MQServerType.Router: _serverSocket = _context.CreateRouterSocket(); break; case MQServerType.Stream: _serverSocket = _context.CreateStreamSocket(); break; case MQServerType.Push: _serverSocket = _context.CreatePushSocket(); break; case MQServerType.XPublisher: _serverSocket = _context.CreateXPublisherSocket(); break; default: _serverSocket = _context.CreateResponseSocket(); break; } _serverSocket.Bind("tcp://*:" + _port); }
void CreateServer() { switch (_type) { case ServerType.Response: _serverSocket = _context.CreateResponseSocket(); break; case ServerType.Pub: _serverSocket = _context.CreatePushSocket(); break; case ServerType.Router: _serverSocket = _context.CreateRouterSocket(); break; case ServerType.Stream: _serverSocket = _context.CreateStreamSocket(); break; case ServerType.Push: _serverSocket = _context.CreatePushSocket(); break; case ServerType.XPub: _serverSocket = _context.CreateXPublisherSocket(); break; default: _serverSocket = _context.CreateResponseSocket(); break; } _serverSocket.Bind("tcp://*:" + _port); Task.Factory.StartNew(() => AsyncRead(_serverSocket), TaskCreationOptions.LongRunning); }
void CreateClient() { switch (_type) { case MQClientType.Request: _clientSocket = _context.CreateRequestSocket(); break; case MQClientType.Subscriber: _clientSocket = _context.CreateSubscriberSocket(); break; case MQClientType.Dealer: _clientSocket = _context.CreateDealerSocket(); break; case MQClientType.Stream: _clientSocket = _context.CreateStreamSocket(); break; case MQClientType.Pull: _clientSocket = _context.CreatePullSocket(); break; case MQClientType.XSubscriber: _clientSocket = _context.CreateXSubscriberSocket(); break; default: _clientSocket = _context.CreateRequestSocket(); break; } _clientSocket.Connect("tcp://" + _ip + ":" + _port); }
public void NativeSocket() { using (NetMQContext context = NetMQContext.Create()) { using (var streamServer = context.CreateStreamSocket()) { streamServer.Bind("tcp://*:5557"); using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { socket.Connect("127.0.0.1", 5557); byte[] buffer = new byte[] { 1 }; socket.Send(buffer); byte[] identity = streamServer.Receive(); byte[] message = streamServer.Receive(); Assert.AreEqual(buffer[0], message[0]); ManualResetEvent socketSignal = new ManualResetEvent(false); Poller poller = new Poller(); poller.AddPollInSocket(socket, s => { socket.Receive(buffer); socketSignal.Set(); // removing the socket poller.RemovePollInSocket(socket); }); poller.PollTillCancelledNonBlocking(); // no message is waiting for the socket so it should fail Assert.IsFalse(socketSignal.WaitOne(200)); // sending a message back to the socket streamServer.SendMore(identity).Send("a"); Assert.IsTrue(socketSignal.WaitOne(200)); socketSignal.Reset(); // sending a message back to the socket streamServer.SendMore(identity).Send("a"); // we remove the native socket so it should fail Assert.IsFalse(socketSignal.WaitOne(200)); poller.Stop(true); } } } }
public void RunPipeline(PairSocket shim) { shim.SignalOK(); shim.ReceiveReady += OnShimReady; m_messagesPipe = m_context.CreatePairSocket(); m_messagesPipe.Connect(string.Format("inproc://wsrouter-{0}", m_id)); m_messagesPipe.ReceiveReady += OnMessagePipeReady; m_stream = m_context.CreateStreamSocket(); m_stream.ReceiveReady += OnStreamReady; m_poller = new Poller(m_messagesPipe, shim, m_stream); m_messagesPipe.SignalOK(); m_poller.Start(); m_messagesPipe.Dispose(); m_stream.Dispose(); }