DeviceHttpServer.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using EasyModbusClient;
  2. using EasyModbusClient.businessBody;
  3. using IMCS.DefaultList;
  4. using IMCS.Lib;
  5. using System;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace IMCS.Device
  12. {
  13. public class DeviceHttpServer
  14. {
  15. public delegate void DelegateHttpServer(string value, HttpListenerResponse response);
  16. public event DelegateHttpServer HttpServerMsg;
  17. public delegate void DelegateHttpServer_WL_Roboot(string value, HttpListenerResponse response);
  18. public event DelegateHttpServer_WL_Roboot HttpServerMsg_Wl_Roboot;
  19. public delegate void DelegateHttpServer_WL_Print(string value, HttpListenerResponse response);
  20. public event DelegateHttpServer_WL_Roboot HttpServerMsg_Wl_Print;
  21. public delegate void DelegateHttpServer_WL_Clean(string value, HttpListenerResponse response);
  22. public event DelegateHttpServer_WL_Clean HttpServerMsg_Wl_Clean;
  23. public delegate void DelegateHttpServer_WL_Machine(string value, HttpListenerResponse response);
  24. public event DelegateHttpServer_WL_Machine HttpServerMsg_Wl_Machine;
  25. public void HttpServer()
  26. {
  27. bool IsRun = false;
  28. string HttpServerUrlString = "";
  29. string localip = Dns.GetHostAddresses(Dns.GetHostName()).Where(m => m.ToString().Contains(".170")).FirstOrDefault().ToString();
  30. HttpServerUrlString = $"http://{localip}:8089/";
  31. //netsh http add urlacl url=http://192.168.170.24:8089/ user=Everyone
  32. string cmdreceive = LibCMD.Instance.WriteCmd($"netsh http add urlacl url={HttpServerUrlString} user=Everyone");
  33. // string cmdreceive = CMDLib.Instance.WriteCmd($"netsh http add urlacl url=http://{localip}:8089/ user=Everyone");
  34. if (cmdreceive.Contains("已成功添加") || cmdreceive.Contains("当文件已存在时"))
  35. {
  36. YG.Log.Instance.WriteLogAdd($"启动HttpServer 默认添加允许项:{cmdreceive}成功");
  37. }
  38. else
  39. {
  40. YG.Log.Instance.WriteLogAdd($"启动HttpServer 默认添加允许项:{cmdreceive}失败");
  41. }
  42. System.Threading.Thread.Sleep(500);
  43. HttpListener listener = new HttpListener();
  44. listener.Prefixes.Add(HttpServerUrlString);
  45. listener.Start();
  46. EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>监听服务启动Listening>>>>");
  47. Task task = Task.Factory.StartNew(async () =>
  48. {
  49. while (listener.IsListening)
  50. {
  51. HttpListenerContext context = listener.GetContext();
  52. HttpListenerRequest request = context.Request;
  53. HttpListenerResponse response = context.Response;
  54. try
  55. {
  56. Servlet servlet = new MyServlet();
  57. servlet.onCreate();
  58. if (!request.Url.ToString().Contains("favicon"))
  59. {
  60. EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>任务请求开始>>>>===" + request.Url);
  61. if (request.HttpMethod == "POST")
  62. {
  63. Stream stream = context.Request.InputStream;
  64. StreamReader reader = new System.IO.StreamReader(stream, Encoding.UTF8);
  65. string body = reader.ReadToEnd();
  66. EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>===收到POST数据 : >>>>===" + body);
  67. System.Console.WriteLine(DateTime.Now + ">>>===收到POST数据 : >>>>===" + body);
  68. CcsRequestBody ccsRequestBody = (CcsRequestBody)JsonJavaScriptSerializer.FromJSON<CcsRequestBody>(body);
  69. if (body.Contains("开"))
  70. {
  71. IsRun = true;
  72. //send(response, -4, "LHT");
  73. }
  74. else if (body.Contains("关"))
  75. {
  76. IsRun = false;
  77. // send(response, -3, "LHT");
  78. }
  79. if (IsRun)
  80. {
  81. if (body.Contains("MachineName"))
  82. {
  83. ItemHttpPostDefaultList itemHttpPostDefaultList = Newtonsoft.Json.JsonConvert.DeserializeObject<ItemHttpPostDefaultList>(body);
  84. if (itemHttpPostDefaultList.JsonOK)
  85. {
  86. }
  87. // break;
  88. }
  89. }
  90. //CcsRequestBody ccsRequestBody = (CcsRequestBody)JsonJavaScriptSerializer.FromJSON<CcsRequestBody>(body);
  91. //string url = (ccsRequestBody.Url + ":" + ccsRequestBody.Port);
  92. //string businessType = ccsRequestBody.BusinessType;
  93. //ConnectDeviceInfo conDeviceInfo = (util.CommonUtil.GetConnectDeviceInfo(url));
  94. //ResponseBody responseBody = new ResponseBody();
  95. //responseBody.Code = 0;
  96. //responseBody.Msg = util.Constants.OPERATE_SUCCESS_MSG;
  97. //response.StatusCode = 200;
  98. //response.ContentType = "application/json;charset=UTF-8";
  99. //response.ContentEncoding = Encoding.UTF8;
  100. //response.AppendHeader("Content-Type", "application/json;charset=UTF-8");
  101. //if (conDeviceInfo != null)
  102. //{
  103. // ModbusClient server = conDeviceInfo.server;
  104. // if (!string.IsNullOrEmpty(businessType))
  105. // {
  106. // responseBody = WriteValue(conDeviceInfo, businessType, true);
  107. // }
  108. // else
  109. // {
  110. // responseBody.Msg = util.Constants.PARA_ERROR_MSG;
  111. // responseBody.Code = util.Constants.RET_FAILURE_CODE;
  112. // }
  113. // //加入回调任务队列
  114. // ccsRequestBody.Data = responseBody.Code + "";
  115. // util.CommonUtil.RequestTaskList(ccsRequestBody);
  116. // var serializerSettings = new JsonSerializerSettings()
  117. // {
  118. // // 设置为驼峰命名
  119. // ContractResolver = new CamelCasePropertyNamesContractResolver()
  120. // };
  121. // using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
  122. // {
  123. // writer.Write(JsonConvert.SerializeObject(responseBody, Formatting.Indented, serializerSettings));
  124. // writer.Close();
  125. // response.Close();
  126. // }
  127. //}
  128. }
  129. }
  130. }
  131. catch (Exception ex)
  132. {
  133. EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>===HTTP Server监听器异常 {0}信息 : >>>>===" + ex.ToString());
  134. listener.Stop();
  135. HttpServer();
  136. }
  137. }
  138. });
  139. task.Wait();
  140. }
  141. }
  142. }