| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System.Threading;
- using ENet;
- using Helper;
- using Log;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- namespace ENetCSTest
- {
- [TestClass]
- public class ENetClientServerTest
- {
- private static async void ClientEvent(ClientHost host, string hostName, ushort port)
- {
- var peer = await host.ConnectAsync(hostName, port);
- using (var sPacket = new Packet("0123456789".ToByteArray(), PacketFlags.Reliable))
- {
- peer.WriteAsync(0, sPacket);
- }
- using (var rPacket = await peer.ReadAsync())
- {
- Logger.Debug(rPacket.Bytes.ToHex());
- CollectionAssert.AreEqual("9876543210".ToByteArray(), rPacket.Bytes);
- }
- await peer.DisconnectAsync();
- host.Stop();
- }
- private static async void ServerEvent(ServerHost host, Barrier barrier)
- {
- barrier.SignalAndWait();
- var peer = await host.AcceptAsync();
- // Client断开,Server端收到Disconnect事件,结束Server线程
- peer.PeerEvent.Disconnect += ev => host.Stop();
- using (var rPacket = await peer.ReadAsync())
- {
- Logger.Debug(rPacket.Bytes.ToHex());
- CollectionAssert.AreEqual("0123456789".ToByteArray(), rPacket.Bytes);
- }
- using (var sPacket = new Packet("9876543210".ToByteArray(), PacketFlags.Reliable))
- {
- peer.WriteAsync(0, sPacket);
- }
- }
- [TestMethod]
- public void ClientSendToServer()
- {
- const string hostName = "127.0.0.1";
- const ushort port = 8888;
- var clientHost = new ClientHost();
- var serverHost = new ServerHost(hostName, port);
- var serverThread = new Thread(() => serverHost.Start(10));
- var clientThread = new Thread(() => clientHost.Start(10));
- 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();
- }
- }
- }
|