NetMQ试用

一、请求响应模式

可以根据需要(动态)创建若干 “请求套接字” 或 “响应套接字”

 1、请求套接字

 1 //创建客户端,指定服务器地址
 2             using (var client = new RequestSocket(">tcp://localhost:5556"))
 3             {
 4                 client.SendFrame("Hello");//发送字符串到套接字,(线程在此阻断直到数据包发出)
 5                 
 6                 //从套接字接收一个数据包,并解析为字符串。(线程在此阻断直到至少一个数据包到达)
 7                 string receive = client.ReceiveFrameString();
 8                 
 9                 Console.WriteLine("From Server: {0}", receive);
10 
11                 Console.ReadKey();
12             }

 2、响应套接字

 1 //创建服务器,指定服务器监听地址
 2             using (var server = new ResponseSocket("@tcp://localhost:5556"))
 3             {
 4                 //从套接字接收一个数据包,并解析为字符串。(线程在此阻断直到至少一个数据包到达)
 5                 string receive = server.ReceiveFrameString();
 6                 Console.WriteLine("From Client: {0}", receive);
 7 
 8                 server.SendFrame("Hi Back");//发送字符串到套接字,(线程在此阻断直到数据包发出)
 9 
10                 Console.ReadKey();
11             }

 

 

二、发布-订阅模式

下面举一个天气预报的小例子:

1、发布者

1 using (var publisher = new PublisherSocket())
2 {
3     publisher.Bind("tcp://127.0.0.1:5556");//发布者bind
4 
5     while (true)
6     {//发布者一直发布消息
7         publisher.SendFrame("邮编..." + ";" + "温度...");//发送消息(字符串):      "邮编...;温度..."
8     }
9 }

注意:消息主题,就是消息的前几个字符(或者字节数组)。(如上面代码中的  "邮编...")

 

2、订阅者

1 using (var subscriber = new SubscriberSocket())
2 {
3     subscriber.Connect("tcp://127.0.0.1:5556");//订阅者connect
4     subscriber.Subscribe("邮编...");//指定订阅者关心的主题。
5 
6     //收到消息(字符串):  "邮编...;温度..."
7     string results = subscriber.ReceiveFrameString();
8 }

注意:(1)如果订阅者忘记调用Subscribe()方法,即未指定订阅的主题(字符串或者字节数组),就不会收到发布者的任何消息。

      (2)如果希望接受发布者发布的任何消息,需要传入空字符串即String.Empty即可。

 

posted on 2017-11-22 14:07  困兽斗  阅读(247)  评论(0)    收藏  举报

导航