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即可。
浙公网安备 33010602011771号