ENetClientServerTest.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System.Threading;
  2. using ENet;
  3. using Helper;
  4. using Log;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. namespace ENetCSTest
  7. {
  8. [TestClass]
  9. public class ENetClientServerTest
  10. {
  11. private static async void ClientEvent(ClientHost host, string hostName, ushort port)
  12. {
  13. var peer = await host.ConnectAsync(hostName, port);
  14. using (var sPacket = new Packet("0123456789".ToByteArray(), PacketFlags.Reliable))
  15. {
  16. peer.WriteAsync(0, sPacket);
  17. }
  18. using (var rPacket = await peer.ReadAsync())
  19. {
  20. Logger.Debug(rPacket.Bytes.ToHex());
  21. CollectionAssert.AreEqual("9876543210".ToByteArray(), rPacket.Bytes);
  22. }
  23. await peer.DisconnectAsync();
  24. host.Stop();
  25. }
  26. private static async void ServerEvent(ServerHost host, Barrier barrier)
  27. {
  28. barrier.SignalAndWait();
  29. var peer = await host.AcceptAsync();
  30. // Client断开,Server端收到Disconnect事件,结束Server线程
  31. peer.PeerEvent.Disconnect += ev => host.Stop();
  32. using (var rPacket = await peer.ReadAsync())
  33. {
  34. Logger.Debug(rPacket.Bytes.ToHex());
  35. CollectionAssert.AreEqual("0123456789".ToByteArray(), rPacket.Bytes);
  36. }
  37. using (var sPacket = new Packet("9876543210".ToByteArray(), PacketFlags.Reliable))
  38. {
  39. peer.WriteAsync(0, sPacket);
  40. }
  41. }
  42. [TestMethod]
  43. public void ClientSendToServer()
  44. {
  45. const string hostName = "127.0.0.1";
  46. const ushort port = 8888;
  47. var clientHost = new ClientHost();
  48. var serverHost = new ServerHost(hostName, port);
  49. var serverThread = new Thread(() => serverHost.Start(10));
  50. var clientThread = new Thread(() => clientHost.Start(10));
  51. serverThread.Start();
  52. clientThread.Start();
  53. var barrier = new Barrier(2);
  54. // 往server host线程增加事件,accept
  55. serverHost.Events += () => ServerEvent(serverHost, barrier);
  56. barrier.SignalAndWait();
  57. // 往client host线程增加事件,client线程连接server
  58. clientHost.Events += () => ClientEvent(clientHost, hostName, port);
  59. serverThread.Join();
  60. clientThread.Join();
  61. }
  62. }
  63. }