中控考勤机WEB主动上报接收SERVER程序

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"+"<br>");
                        writer.WriteLine("Server: DsidealSuperServer/1.9.0" + "<br>");
                        writer.WriteLine(DateTime.Now.ToString("r") + "<br>");
                        writer.WriteLine("Content-Type: text/plain" + "<br>");
                        writer.WriteLine("Connection: close" + "<br>");
                        writer.WriteLine("Content-Length: "+(3+count.ToString().Length)+ "<br>");
                        writer.WriteLine("Pragma: no-cache" + "<br>");
                        writer.WriteLine("Cache-Control: no-store" + "<br>");
                        writer.WriteLine("" + "<br>");
                        writer.WriteLine("OK:"+ count + "<br>");
                        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;
        }

    }
}

 

中控考勤机 web3.1页面是指一种基于web技术的中控考勤机系统的用户界面页面。考勤机是用于管理和记录员工考勤数据的设备,而web3.1页面是考勤机系统中的一个重要组成部分,提供了用户与系统交互的界面。 一个中控考勤机web3.1页面通常具有以下特点和功能: 1. 实时数据展示:页面可以显示实时的考勤数据,包括员工的签到、签退时间、迟到、早退等信息。用户可以通过页面快速了解员工的考勤情况。 2. 考勤规则设置:页面提供了考勤规则的设置界面,可以根据公司的实际需求自定义考勤规则,如迟到早退的时间限制、加班规则等。用户可以根据需要对考勤规则进行调整。 3. 异常处理:页面可以显示异常考勤数据,如未打卡、缺卡、补卡等情况。用户可以通过页面对异常数据进行处理和补充,保证考勤数据的准确性。 4. 统计报表:页面提供了各种考勤统计报表,如每日、每周、每月的考勤汇总表、迟到早退统计表等。用户可以根据需要生成和导出不同类型的统计报表,方便管理和分析考勤数据。 5. 员工管控:页面提供了员工档案管理功能,用户可以通过页面对员工资料进行管理,包括基本信息、部门信息等。并且还可以对员工进行请假、调休等操作。 总之,中控考勤机 web3.1页面在中控考勤系统中扮演着重要的角色,能够方便快捷地管理和分析考勤数据,优化公司的考勤管理流程,提高管理效率和准确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值