private void ClockCheck(SD_Thread Bit)//心跳检测线程 { while (Bit.isStart) { TimeOut = SS_TriggerMarker.Clock_System(LateTime, GetOutTime); //心跳超时检测 Thread.Sleep((int)ClockTimeDelay * 1000); //处理延时 } }
private void DataQueueProcessor(SD_Thread Bit)//数据队列处理器 { while (Bit.isStart) { try { byte[] data = udpGet.Receive(ref GetServerPoint); //阻塞式接受数据 GetQueue.Enqueue(data); //添加到队列 LateTime = DateTime.Now; //刷新心跳时间 } catch { } } }
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(); }
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);//处理延时 } }
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(); }