Beispiel #1
0
 private void ClockCheck(SD_Thread Bit)//心跳检测线程
 {
     while (Bit.isStart)
     {
         TimeOut = SS_TriggerMarker.Clock_System(LateTime, GetOutTime); //心跳超时检测
         Thread.Sleep((int)ClockTimeDelay * 1000);                      //处理延时
     }
 }
Beispiel #2
0
 private void DataQueueProcessor(SD_Thread Bit)//数据队列处理器
 {
     while (Bit.isStart)
     {
         try
         {
             byte[] data = udpGet.Receive(ref GetServerPoint); //阻塞式接受数据
             GetQueue.Enqueue(data);                           //添加到队列
             LateTime = DateTime.Now;                          //刷新心跳时间
         }
         catch
         {
         }
     }
 }
Beispiel #3
0
        public void Refresh()
        {
            if (SetThread != null)
            {
                OnDestroy();
            }

            SetQueue = new Queue();
            LateTime = DateTime.Now;//刷新心跳时间

            udpSet         = new UdpClient();
            SetServerPoint = new IPEndPoint(IPAddress.Parse(SetIP), SetPORT);//发送服务器端口IP

            //=[线程启动]======
            SetThread = new SD_Thread(DataQueueProcessor);
            SetThread.Start();
        }
Beispiel #4
0
        private void DataQueueProcessor(SD_Thread Bit)//数据队列处理器
        {
            while (Bit.isStart)
            {
                if (SS_TriggerMarker.Clock_System(LateTime, ClockTimeDelay) && StartClock) //心跳时间判断
                {
                    SetQueue.Enqueue(new byte[] { 1 });                                    //心跳消息暂时为Byte 1
                    LateTime = DateTime.Now;                                               //刷新心跳时间
                }

                if (SetQueue.Count > 0)//发送数据
                {
                    byte[] data = (byte[])SetQueue.Dequeue();
                    udpSet.Send(data, data.Length, SetServerPoint); //针对发送数据
                    LateTime = DateTime.Now;                        //刷新心跳时间
                }

                Thread.Sleep((int)SetTimeDelay * 1000);//处理延时
            }
        }
Beispiel #5
0
        public void Refresh()
        {
            if (GetThread != null)
            {
                OnDestroy();
            }

            GetQueue = new Queue();
            LateTime = DateTime.Now;//刷新心跳时间

            IPAddress ServerIp = Dns.GetHostEntry(Dns.GetHostName()).AddressList[2];

            Local_IP = ServerIp.ToString(); //获取本地IP


            udpGet         = new UdpClient(new IPEndPoint(IPAddress.Parse(Local_IP), Local_PORT)); //绑定IP和端口
            GetServerPoint = new IPEndPoint(IPAddress.Any, 0);                                     //监听接收的所有消息

            //=[线程启动]======
            GetThread   = new SD_Thread(DataQueueProcessor);
            ClockThread = new SD_Thread(ClockCheck);
            GetThread.Start();
            ClockThread.Start();
        }