Exemple #1
0
 public void Init(Socket socket)
 {
     this.socket = socket;
     //已经启用
     isUse = true;
     //该类作为对象池对象循环使用,每次初始化一些字段需要重新设置
     bufferCount = 0;
     //设置心跳时间
     lastTickTime = ServTime.GetTimeStamp();
 }
        //处理心跳
        public void HeartBeat()
        {
            Console.WriteLine("主定时器开始运行");

            //当前时间戳
            long timeNow = ServTime.GetTimeStamp();

            for (int i = 0; i < conns.Length; i++)
            {
                if (conns[i].isUse)
                {
                    //超过心跳时间
                    if (timeNow - conns[i].lastTickTime > heartBeatTime)
                    {
                        Console.WriteLine("心跳引起连接断开" + conns[i].GetAddress());
                        lock (conns[i])
                        {
                            conns[i].Close();
                        }
                    }
                }
            }
        }