コード例 #1
0
        /// <summary>
        /// 忆林的
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="info"></param>
        /// <param name="bys"></param>
        private void YiLinMethod(Socket pox, MacIPVersionInfo info, byte[] bys)
        {
            var mac = info.mac;

            if (!string.IsNullOrEmpty(mac))
            {
                Program.upgradeDevice(mac, pox);
            }
            //LogWriteLock.EnterWriteLock();
            //var st = new SocketTime();
            //st.socket = pox;
            //st.time = DateTime.Now;
            //socketMap[mac] = st;
            //LogWriteLock.ExitWriteLock();
            var ipEnd        = (IPEndPoint)pox.RemoteEndPoint;
            var heartBeatKey = "HeartBeat:" + ipEnd.Address.ToString() + "" + ipEnd.Port;


            var key = "Socket.Tcp.SetTime." + mac;

            #region 设置时间
            if (!RedisHelper <string> .IsKeyExist(key))
            {
                Task.Factory.StartNew(() =>
                {
                    try
                    {
                        ///60*60*24
                        RedisHelper <string> .StoreOneKey(key, "1", 86400);
                        var set_time_str   = "55ff00010091010110a1000a0461" + StrHelper.BackTime();
                        var set_time_bytes = CRC16.CRC_XModem(set_time_str);
                        pox.Send(set_time_bytes);
                        Thread.Sleep(50);
                    }
                    catch (SocketException se)
                    {
                        Func <bool> func1 = () => true;
                        var msgx          = "TCP:670:" + se.ErrorCode + " " + se.Message;
                        LogHelper.LogFilter(func1, msgx);
                    }
                });
            }
            #endregion

            #region 设置心跳包
            if (RedisHelper <string> .IsKeyExist(heartBeatKey) == false)
            {
                var task = new TaskFactory();
                task.StartNew(() =>
                {
                    var orgText = StrHelper.GetHexStr(bys);
                    if (!string.IsNullOrEmpty(mac) && (mac.Equals("98d8634a034e") || mac.Equals("98d8634a0344") || mac.Equals("98d8638c7fa2")))
                    {
                        LogHelper.LogFilter(true, $"心跳包=>{mac},{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
                    }
                    DALMacIPInfo.MacIPInfo_Add(new MacIPInfo()
                    {
                        mac     = mac,
                        IP      = ipEnd.Address.ToString(),
                        localip = "",
                        ssid    = "",
                        OrgText = orgText
                    });
                });
                ///缓存2分钟
                RedisHelper <string> .StoreOneKey(heartBeatKey, "1", heartbeatTime);
            }
            else
            {
            }
            #endregion
        }