| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System.Diagnostics;
- using System.Threading;
- using ENet;
- using Helper;
- using Logger;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- namespace ENetTest
- {
- [TestClass]
- public class ENetClientServerTest
- {
- private const int pingPangCount = 10000;
- private static async void ClientEvent(EService service, string hostName, ushort port)
- {
- var eSocket = new ESocket(service);
- await eSocket.ConnectAsync(hostName, port);
- var stopWatch = new Stopwatch();
- stopWatch.Start();
- for (int i = 0; i < pingPangCount; ++i)
- {
- eSocket.WriteAsync("0123456789".ToByteArray());
- var bytes = await eSocket.ReadAsync();
- CollectionAssert.AreEqual("9876543210".ToByteArray(), bytes);
- }
- stopWatch.Stop();
- Log.Debug("time: {0}", stopWatch.ElapsedMilliseconds);
- await eSocket.DisconnectAsync();
- service.Stop();
- }
- private static async void ServerEvent(EService service, Barrier barrier)
- {
- barrier.SignalAndWait();
- bool isRunning = true;
- while (isRunning)
- {
- Log.Debug("start accept");
- var eSocket = new ESocket(service);
- await eSocket.AcceptAsync();
- eSocket.Disconnect += ev =>
- {
- isRunning = false;
- service.Stop();
- };
- Echo(eSocket);
- }
- }
- private static async void Echo(ESocket eSocket)
- {
- for (int i = 0; i < pingPangCount; ++i)
- {
- var bytes = await eSocket.ReadAsync();
- CollectionAssert.AreEqual("0123456789".ToByteArray(), bytes);
- eSocket.WriteAsync("9876543210".ToByteArray());
- }
- }
- [TestMethod]
- public void ClientSendToServer()
- {
- const string hostName = "127.0.0.1";
- const ushort port = 8888;
- var clientHost = new EService();
- var serverHost = new EService(hostName, port);
- var serverThread = new Thread(() => serverHost.Start());
- var clientThread = new Thread(() => clientHost.Start());
- serverThread.Start();
- clientThread.Start();
- var barrier = new Barrier(2);
- // 往server host线程增加事件,accept
- serverHost.Events += () => ServerEvent(serverHost, barrier);
- barrier.SignalAndWait();
- // 往client host线程增加事件,client线程连接server
- clientHost.Events += () => ClientEvent(clientHost, hostName, port);
- serverThread.Join();
- clientThread.Join();
- }
- }
- }
|