ZmqReqRepTest.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Threading.Tasks;
  3. using Helper;
  4. using Log;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. using Zmq;
  7. using ZeroMQ;
  8. namespace ZmqTest
  9. {
  10. [TestClass]
  11. public class ZmqReqRepTest
  12. {
  13. const string address = "tcp://127.0.0.1:5001";
  14. [TestMethod]
  15. public void TestSendAsyncAndRecvAsync()
  16. {
  17. var clientPoller = new ZPoller();
  18. var serverPoller = new ZPoller();
  19. clientPoller.Events += () => Client2(clientPoller);
  20. serverPoller.Events += () => Server2(serverPoller);
  21. var task1 = Task.Factory.StartNew(clientPoller.Start, TaskCreationOptions.LongRunning);
  22. var task2 = Task.Factory.StartNew(serverPoller.Start, TaskCreationOptions.LongRunning);
  23. Task.WaitAll(task1, task2);
  24. }
  25. public static async Task Client2(ZPoller zPoller)
  26. {
  27. using (var context = ZmqContext.Create())
  28. {
  29. try
  30. {
  31. var socket = new ZSocket(context.CreateSocket(SocketType.REP));
  32. zPoller.Add(socket);
  33. socket.Connect(address);
  34. await socket.SendAsync("hello world");
  35. string recvStr = await socket.RecvAsync();
  36. Logger.Debug(string.Format("client2: {0}", recvStr));
  37. zPoller.Stop();
  38. }
  39. catch (Exception e)
  40. {
  41. Logger.Debug(string.Format("exception: {0}", e.StackTrace));
  42. }
  43. }
  44. }
  45. public static async Task Server2(ZPoller zPoller)
  46. {
  47. using (var context = ZmqContext.Create())
  48. {
  49. try
  50. {
  51. var socket = new ZSocket(context.CreateSocket(SocketType.REP));
  52. zPoller.Add(socket);
  53. socket.Bind(address);
  54. string recvStr = await socket.RecvAsync();
  55. Logger.Debug(string.Format("server2: {0}", recvStr));
  56. await socket.SendAsync("hello world");
  57. zPoller.Stop();
  58. }
  59. catch (Exception e)
  60. {
  61. Logger.Debug(string.Format("exception2: {0}", e.StackTrace));
  62. }
  63. }
  64. }
  65. }
  66. }