ENetClientServerTest.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System.Threading;
  2. using ENet;
  3. using Helper;
  4. using Microsoft.VisualStudio.TestTools.UnitTesting;
  5. namespace ENetCSTest
  6. {
  7. [TestClass]
  8. public class ENetClientServerTest
  9. {
  10. private static async void ClientEvent(ClientHost host, Address address)
  11. {
  12. using (var peer = await host.ConnectAsync(address))
  13. {
  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. CollectionAssert.AreEqual("9876543210".ToByteArray(), rPacket.Bytes);
  21. }
  22. await peer.DisconnectLaterAsync();
  23. }
  24. host.Stop();
  25. }
  26. private static async void OnAccept(ServerHost host, Peer peer)
  27. {
  28. using (var rPacket = await peer.ReceiveAsync())
  29. {
  30. CollectionAssert.AreEqual("0123456789".ToByteArray(), rPacket.Bytes);
  31. }
  32. using(var sPacket = new Packet("9876543210".ToByteArray(), PacketFlags.Reliable))
  33. {
  34. peer.Send(0, sPacket);
  35. host.Flush();
  36. }
  37. // Client断开,Server端收到Disconnect事件,结束Server线程
  38. peer.PeerEvent.Disconnect += (ev) => host.Stop();
  39. }
  40. [TestMethod]
  41. public void ClientSendToServer()
  42. {
  43. var address = new Address { HostName = "127.0.0.1", Port = 8888 };
  44. var clientHost = new ClientHost();
  45. var serverHost = new ServerHost(address);
  46. // accept回调事件
  47. serverHost.AcceptEvent = peer => OnAccept(serverHost, peer);
  48. var serverThread = new Thread(() => serverHost.Start(10));
  49. var clientThread = new Thread(() => clientHost.Start(10));
  50. serverThread.Start();
  51. clientThread.Start();
  52. // 往client host线程增加事件,client线程连接server
  53. clientHost.Events += () => ClientEvent(clientHost, address);
  54. serverThread.Join();
  55. clientThread.Join();
  56. }
  57. }
  58. }