private void RefreshOverTime(Kid kid) { if (kid.overTime > IntervalTime) { kid.overTime = kid.overTime - IntervalTime; //Console.WriteLine("reduce program time:" + kid.name+" time:"+kid.overTime); } else { Var.ListKids.Remove(kid); //Console.WriteLine("remove program and send message:" + kid.name+" message:"+kid.message); SendMSM sendMSM = new SendMSM(); string datetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string context = "失去心跳连接,详细信息---IP:" + kid.ip + " 名称:" + kid.name + " 预留信息:" + kid.message + " 时间:" + datetime; Console.WriteLine(context); Var.showListKids(); //发送短信 //sendMSM.SendSmsMessage(context); } }
public static void UdpServer(IPEndPoint serverIP) { bool thread_flag = true; Console.WriteLine("UDP服务器开始监听" + serverIP.Port + "端口"); Socket udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); udpServer.Bind(serverIP); IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)ipep; new Thread(() => { while (thread_flag) { byte[] data = new byte[1024]; int length = 0; try { length = udpServer.ReceiveFrom(data, ref Remote);//接受来自服务器的数据 } catch (Exception ex) { Console.WriteLine(string.Format("出现异常:{0}", ex.Message)); break; } string datetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string message = Encoding.UTF8.GetString(data, 0, length); string IP = (Remote as IPEndPoint).Address.ToString(); string Port = (Remote as IPEndPoint).Port.ToString(); string ipport = (Remote as IPEndPoint).Address.ToString() + ":" + (Remote as IPEndPoint).Port.ToString(); // Console.WriteLine(string.Format("{0} 收到來自{1}的消息:{2}", datetime, ipport, message)); //将接收的心跳交给ManageVarThread线程处理 try { JObject jo = (JObject)JsonConvert.DeserializeObject(message); Kid kid = new Kid(IP + jo["name"].ToString(), jo["name"].ToString(), int.Parse(jo["period"].ToString()), jo["message"].ToString(), IP, Port); ManageVarThread manV = new ManageVarThread(); manV.kid = kid; Thread man = new Thread(manV.test); man.Start(); } catch (Exception e) { //Console.WriteLine( e.Message); } } udpServer.Close(); }).Start(); Console.WriteLine("\n\n按[F4]键退出。"); ConsoleKey key; while (true) { key = Console.ReadKey(true).Key; if (key == ConsoleKey.F4) { Console.WriteLine("end waiting for udp data."); thread_flag = false; break; } } }