Program.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using BossServer.server;
  2. using System;
  3. using System.Diagnostics;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.Threading.Tasks;
  7. namespace BossServer
  8. {
  9. class Program
  10. {
  11. static Socket SocketWatch = null; // 创建一个和客户端通信的套接字
  12. const int port = 6002; // 端口号(用来监听的)
  13. static void Main(string[] args)
  14. {
  15. selfTest();
  16. IPAddress ip = IPAddress.Any;
  17. IPEndPoint ipe = new IPEndPoint(ip, port); //将IP地址和端口号绑定到网络节点point上
  18. //定义一个套接字用于监听客户端发来的消息,包含三个参数(IP4寻址协议,流式连接,Tcp协议)
  19. SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  20. SocketWatch.Bind(ipe); // 监听绑定的网络节点
  21. SocketWatch.Listen(20); // 将套接字的监听队列长度限制为20
  22. Console.WriteLine("开启监听......");
  23. Console.WriteLine("ctrl + c 退出程序......");
  24. Task.Run(WatchConnecting).Wait(); // 开启监听线程
  25. SocketWatch.Close(); // 结束监听socket
  26. }
  27. static void selfTest()
  28. {
  29. var rdb = Redis.Ins.GetDatabase(0);
  30. Debug.Assert(rdb.StringSet("test", "wanggang" + DateTime.Now.ToString("yyyyMMddHHmmss")), "Redis读写失败!");
  31. }
  32. /// <summary>
  33. /// 监听客户端发来的请求
  34. /// </summary>
  35. async static Task WatchConnecting()
  36. {
  37. while (true) // 持续不断监听客户端发来的请求
  38. {
  39. Socket connection;
  40. try
  41. {
  42. connection = await SocketWatch.AcceptAsync();
  43. }
  44. catch (Exception ex)
  45. {
  46. Console.WriteLine(ex.Message); // 提示套接字监听异常
  47. break;
  48. }
  49. Room.Instance.AddPeer(new Peer(connection));
  50. }
  51. }
  52. }
  53. }