|
|
@@ -1,7 +1,10 @@
|
|
|
-using System.Threading.Tasks;
|
|
|
+using System;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using Helper;
|
|
|
using Log;
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
using NetMQ;
|
|
|
+using Zmq;
|
|
|
|
|
|
namespace ZmqTest
|
|
|
{
|
|
|
@@ -13,8 +16,8 @@ namespace ZmqTest
|
|
|
[TestMethod]
|
|
|
public void TestMethod()
|
|
|
{
|
|
|
- var task1 = Task.Factory.StartNew(Server);
|
|
|
- var task2 = Task.Factory.StartNew(Client);
|
|
|
+ var task1 = Task.Factory.StartNew(Server, TaskCreationOptions.LongRunning);
|
|
|
+ var task2 = Task.Factory.StartNew(Client, TaskCreationOptions.LongRunning);
|
|
|
Task.WaitAll(task1, task2);
|
|
|
}
|
|
|
|
|
|
@@ -61,5 +64,60 @@ namespace ZmqTest
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ [TestMethod]
|
|
|
+ public void TestSendAsyncAndRecvAsync()
|
|
|
+ {
|
|
|
+ var clientPoller = new ZmqPoller();
|
|
|
+ var serverPoller = new ZmqPoller();
|
|
|
+
|
|
|
+ clientPoller.Events += () => Client2(clientPoller);
|
|
|
+
|
|
|
+ serverPoller.Events += () => Server2(serverPoller);
|
|
|
+
|
|
|
+ var task1 = Task.Factory.StartNew(clientPoller.Start, TaskCreationOptions.LongRunning);
|
|
|
+ var task2 = Task.Factory.StartNew(serverPoller.Start, TaskCreationOptions.LongRunning);
|
|
|
+ Task.WaitAll(task1, task2);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static async Task Client2(ZmqPoller poller)
|
|
|
+ {
|
|
|
+ using (var context = NetMQContext.Create())
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var socket = new ZmqSocket(poller, context.CreateRequestSocket());
|
|
|
+ socket.Connect(address);
|
|
|
+ await socket.SendAsync("hello world".ToByteArray());
|
|
|
+ byte[] bytes = await socket.RecvAsync();
|
|
|
+ Logger.Debug(string.Format("client2: {0}", bytes.ToStr()));
|
|
|
+ await Task.Run(() => poller.Stop(false));
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ Logger.Debug(string.Format("exception: {0}", e.StackTrace));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static async Task Server2(ZmqPoller poller)
|
|
|
+ {
|
|
|
+ using (var context = NetMQContext.Create())
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var socket = new ZmqSocket(poller, context.CreateResponseSocket());
|
|
|
+ socket.Bind(address);
|
|
|
+ byte[] bytes = await socket.RecvAsync();
|
|
|
+ Logger.Debug(string.Format("server2: {0}", bytes.ToStr()));
|
|
|
+ await socket.SendAsync("hello world".ToByteArray());
|
|
|
+ await Task.Run(() => poller.Stop(false));
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ Logger.Debug(string.Format("exception2: {0}", e.StackTrace));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|