ENetClientServerTest.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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, Address address)
  12. {
  13. var peer = await host.ConnectAsync(address);
  14. using (var sPacket = new Packet("0123456789".ToByteArray(), PacketFlags.Reliable))
  15. {
  16. peer.Send(0, sPacket);
  17. }
  18. using (var rPacket = await peer.ReceiveAsync())
  19. {
  20. Logger.Debug(rPacket.Bytes.ToStr());
  21. CollectionAssert.AreEqual("9876543210".ToByteArray(), rPacket.Bytes);
  22. }
  23. await peer.DisconnectAsync();
  24. host.Stop();
  25. }
  26. private static async void ServerEvent(ServerHost host)
  27. {
  28. var peer = await host.AcceptAsync();
  29. // Client断开,Server端收到Disconnect事件,结束Server线程
  30. peer.PeerEvent.Disconnect += ev => host.Stop();
  31. using (var rPacket = await peer.ReceiveAsync())
  32. {
  33. Logger.Debug(rPacket.Bytes.ToStr());
  34. CollectionAssert.AreEqual("0123456789".ToByteArray(), rPacket.Bytes);
  35. }
  36. using (var sPacket = new Packet("9876543210".ToByteArray(), PacketFlags.Reliable))
  37. {
  38. peer.Send(0, sPacket);
  39. }
  40. }
  41. [TestMethod]
  42. public void ClientSendToServer()
  43. {
  44. var address = new Address { HostName = "127.0.0.1", Port = 8888 };
  45. var clientHost = new ClientHost();
  46. var serverHost = new ServerHost(address);
  47. var serverThread = new Thread(() => serverHost.Start(10));
  48. var clientThread = new Thread(() => clientHost.Start(10));
  49. serverThread.Start();
  50. clientThread.Start();
  51. // 往client host线程增加事件,client线程连接server
  52. clientHost.Events += () => ClientEvent(clientHost, address);
  53. // 往server host线程增加事件,accept
  54. serverHost.Events += () => ServerEvent(serverHost);
  55. serverThread.Join();
  56. clientThread.Join();
  57. }
  58. }
  59. }