| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | using EasyModbusClient;using EasyModbusClient.businessBody;using IMCS.DefaultList;using IMCS.Lib;using System;using System.IO;using System.Linq;using System.Net;using System.Text;using System.Threading.Tasks;namespace IMCS.Device{    public class DeviceHttpServer    {        public delegate void DelegateHttpServer(string value, HttpListenerResponse response);        public event DelegateHttpServer HttpServerMsg;        public delegate void DelegateHttpServer_WL_Roboot(string value, HttpListenerResponse response);        public event DelegateHttpServer_WL_Roboot HttpServerMsg_Wl_Roboot;        public delegate void DelegateHttpServer_WL_Print(string value, HttpListenerResponse response);        public event DelegateHttpServer_WL_Roboot HttpServerMsg_Wl_Print;        public delegate void DelegateHttpServer_WL_Clean(string value, HttpListenerResponse response);        public event DelegateHttpServer_WL_Clean HttpServerMsg_Wl_Clean;        public delegate void DelegateHttpServer_WL_Machine(string value, HttpListenerResponse response);        public event DelegateHttpServer_WL_Machine HttpServerMsg_Wl_Machine;        public void HttpServer()        {            bool IsRun = false;            string HttpServerUrlString = "";            string localip = Dns.GetHostAddresses(Dns.GetHostName()).Where(m => m.ToString().Contains(".170")).FirstOrDefault().ToString();            HttpServerUrlString = $"http://{localip}:8089/";            //netsh http add urlacl url=http://192.168.170.24:8089/ user=Everyone            string cmdreceive = LibCMD.Instance.WriteCmd($"netsh http add urlacl url={HttpServerUrlString}  user=Everyone");            //  string cmdreceive = CMDLib.Instance.WriteCmd($"netsh http add urlacl url=http://{localip}:8089/  user=Everyone");            if (cmdreceive.Contains("已成功添加") || cmdreceive.Contains("当文件已存在时"))            {                YG.Log.Instance.WriteLogAdd($"启动HttpServer 默认添加允许项:{cmdreceive}成功");            }            else            {                YG.Log.Instance.WriteLogAdd($"启动HttpServer 默认添加允许项:{cmdreceive}失败");            }            System.Threading.Thread.Sleep(500);            HttpListener listener = new HttpListener();            listener.Prefixes.Add(HttpServerUrlString);            listener.Start();            EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>监听服务启动Listening>>>>");            Task task = Task.Factory.StartNew(async () =>            {                while (listener.IsListening)                {                    HttpListenerContext context = listener.GetContext();                    HttpListenerRequest request = context.Request;                    HttpListenerResponse response = context.Response;                    try                    {                        Servlet servlet = new MyServlet();                        servlet.onCreate();                        if (!request.Url.ToString().Contains("favicon"))                        {                            EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>任务请求开始>>>>===" + request.Url);                            if (request.HttpMethod == "POST")                            {                                Stream stream = context.Request.InputStream;                                StreamReader reader = new System.IO.StreamReader(stream, Encoding.UTF8);                                string body = reader.ReadToEnd();                                EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>===收到POST数据 : >>>>===" + body);                                System.Console.WriteLine(DateTime.Now + ">>>===收到POST数据 : >>>>===" + body);                                CcsRequestBody ccsRequestBody = (CcsRequestBody)JsonJavaScriptSerializer.FromJSON<CcsRequestBody>(body);                                if (body.Contains("开"))                                {                                    IsRun = true;                                    //send(response, -4, "LHT");                                }                                else if (body.Contains("关"))                                {                                    IsRun = false;                                   // send(response, -3, "LHT");                                }                                if (IsRun)                                {                                    if (body.Contains("MachineName"))                                    {                                        ItemHttpPostDefaultList itemHttpPostDefaultList = Newtonsoft.Json.JsonConvert.DeserializeObject<ItemHttpPostDefaultList>(body);                                        if (itemHttpPostDefaultList.JsonOK)                                        {                                                                                  }                                        // break;                                    }                                }                                //CcsRequestBody ccsRequestBody = (CcsRequestBody)JsonJavaScriptSerializer.FromJSON<CcsRequestBody>(body);                                //string url = (ccsRequestBody.Url + ":" + ccsRequestBody.Port);                                //string businessType = ccsRequestBody.BusinessType;                                //ConnectDeviceInfo conDeviceInfo = (util.CommonUtil.GetConnectDeviceInfo(url));                                //ResponseBody responseBody = new ResponseBody();                                //responseBody.Code = 0;                                //responseBody.Msg = util.Constants.OPERATE_SUCCESS_MSG;                                //response.StatusCode = 200;                                //response.ContentType = "application/json;charset=UTF-8";                                //response.ContentEncoding = Encoding.UTF8;                                //response.AppendHeader("Content-Type", "application/json;charset=UTF-8");                                //if (conDeviceInfo != null)                                //{                                //    ModbusClient server = conDeviceInfo.server;                                //    if (!string.IsNullOrEmpty(businessType))                                //    {                                //        responseBody = WriteValue(conDeviceInfo, businessType, true);                                //    }                                //    else                                //    {                                //        responseBody.Msg = util.Constants.PARA_ERROR_MSG;                                //        responseBody.Code = util.Constants.RET_FAILURE_CODE;                                //    }                                //    //加入回调任务队列                                //    ccsRequestBody.Data = responseBody.Code + "";                                //    util.CommonUtil.RequestTaskList(ccsRequestBody);                                //    var serializerSettings = new JsonSerializerSettings()                                //    {                                //        // 设置为驼峰命名                                //        ContractResolver = new CamelCasePropertyNamesContractResolver()                                //    };                                //    using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))                                //    {                                //        writer.Write(JsonConvert.SerializeObject(responseBody, Formatting.Indented, serializerSettings));                                //        writer.Close();                                //        response.Close();                                //    }                                //}                            }                        }                    }                    catch (Exception ex)                    {                        EasyModbusClient.util.CommonUtil.WriteAccessLog(DateTime.Now + ">>>===HTTP Server监听器异常 {0}信息 : >>>>===" + ex.ToString());                        listener.Stop();                        HttpServer();                    }                }            });            task.Wait();        }    }}
 |