using System;using System.IO;using System.Net;using System.Text.RegularExpressions;namespace ConsoleApplication3{ class Program { static void Main(string[] args) { using (var listerner = new HttpListener()) { listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous; var ipEntry = Dns.GetHostEntry(Dns.GetHostName()); var ipList = ipEntry.AddressList; const int port = 8088; foreach (var ip in ipList) { if (IsCorrenctIp(ip.ToString())) { listerner.Prefixes.Add("http://" + ip + ":"+ port + "/iclock/"); } } listerner.Prefixes.Add("http://127.0.0.1:"+ port + "/iclock/"); listerner.Prefixes.Add("http://localhost:"+ port + "/iclock/"); listerner.Start(); Console.WriteLine("【系统提示】考勤管理系统启动成功!"); while (true) { //等待请求连接 //没有请求则GetContext处于阻塞状态 var ctx = listerner.GetContext(); ctx.Response.StatusCode = 200;//设置返回给客服端http状态代码 var sn = ctx.Request.QueryString["SN"]; var httpMethod=ctx.Request.HttpMethod; var table = ctx.Request.QueryString["table"]; var count = 1; if ((sn != null) &&(table!=null)&&table== "ATTLOG"&&(httpMethod=="POST")) { Console.WriteLine("设备号:"+sn); var result = GetRequestPostData(ctx.Request, out count); var array = result.Split('\t'); var userId = array[0]; var userName = "未知人员"; if (userId == "1") { userName = "黄海"; } if (userId == "2") { userName = "吴缤"; } if (userId == "3") { userName = "申健"; } if (userId == "197710110") { userName = "周枫"; } Console.WriteLine(userName + " " + array[1]); } //使用Writer输出http响应代码 using (var writer = new StreamWriter(ctx.Response.OutputStream)) { ctx.Response.ContentType = ctx.Request.AcceptTypes[0]; writer.WriteLine("HTTP/1.1 200 OK"+""); writer.WriteLine("Server: DsidealSuperServer/1.9.0" + ""); writer.WriteLine(DateTime.Now.ToString("r") + ""); writer.WriteLine("Content-Type: text/plain" + ""); writer.WriteLine("Connection: close" + ""); writer.WriteLine("Content-Length: "+(3+count.ToString().Length)+ ""); writer.WriteLine("Pragma: no-cache" + ""); writer.WriteLine("Cache-Control: no-store" + ""); writer.WriteLine("" + ""); writer.WriteLine("OK:"+ count + ""); writer.Close(); ctx.Response.Close(); } } } } public static bool IsCorrenctIp(string ip) { var pattrn = @"(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])"; return Regex.IsMatch(ip, pattrn); } public static string GetRequestPostData(HttpListenerRequest request,out int Count) { Count = 0; if (!request.HasEntityBody) { return null; } var returnStr = ""; using (var body = request.InputStream) { using (var reader = new StreamReader(body, request.ContentEncoding)) { while (reader.Peek() >= 0) { var nowString = (char) reader.Read(); if (nowString.ToString() == "\n") { Count++; } returnStr = returnStr+ nowString; } } } return returnStr; } }}