Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

99 rindas
2.8 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net;
  4. using System.Net.Sockets;
  5. namespace StuMgmLib.MyNameSpace
  6. {
  7. public class TcpConn
  8. {
  9. private IPEndPoint IPP = null;
  10. private Socket socket = null;
  11. private Socket socketClient = null;
  12. private bool my_SocketExist = false;
  13. /// <summary>
  14. /// 判断服务器开关
  15. /// </summary>
  16. public bool SocketExist
  17. {
  18. get { return my_SocketExist; }
  19. private set { my_SocketExist = value; }
  20. }
  21. #region 开启服务器
  22. public void OpenServer(int port)
  23. {
  24. IPP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), port);
  25. socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  26. socket.Bind(IPP);
  27. socket.Listen(0);
  28. SocketExist = true;
  29. }
  30. #endregion
  31. #region 关闭服务器
  32. public void CloseServer()
  33. {
  34. if (socketClient != null)
  35. socketClient.Close();
  36. if (socket != null)
  37. socket.Close();
  38. SocketExist = false;
  39. }
  40. #endregion
  41. #region 接收客户端连接
  42. public string acceptConnection()
  43. {
  44. try
  45. {
  46. socketClient = socket.Accept(); // 阻塞等待客户端连接
  47. return socketClient.RemoteEndPoint.ToString() + " 已连接 \n";
  48. }
  49. catch (Exception)
  50. {
  51. return null;
  52. }
  53. }
  54. #endregion
  55. const int recvTimeOut = 3000; // 设置接收超时时间
  56. #region 接收数据
  57. public string acpMsg()
  58. {
  59. byte[] arrDataRecv = new byte[4096]; // 定义接收数组
  60. string reEdPoint = "";
  61. try
  62. {
  63. reEdPoint = socketClient.RemoteEndPoint.ToString();
  64. socketClient.ReceiveTimeout = recvTimeOut;
  65. int len = socketClient.Receive(arrDataRecv);
  66. DataAnalyze.GetFunc(arrDataRecv); // 解析
  67. List<byte> listDataRecv = new List<byte> { }; // 定义截取列表
  68. return reEdPoint + " " + len.ToString() + " 断开连接 \n";
  69. }
  70. catch // 客户端断开连接
  71. {
  72. if (socketClient != null)
  73. return reEdPoint + " 断开连接 \n";
  74. else
  75. return null;
  76. }
  77. finally
  78. {
  79. if (socketClient != null)
  80. socketClient.Close();
  81. }
  82. }
  83. #endregion
  84. }
  85. }