private static RowClass GetRowClass(Model.Row row, int rowIndex, List <Model.Row> means) { RowClass rowClass = new RowClass(); rowClass.RowIndex = rowIndex; rowClass.ClassIndex = 0; double currentDistance = GetInfinityDistance(row, means[0]); for (int i = 1; i < means.Count; i++) { double distance = GetInfinityDistance(row, means[i]); if (distance < currentDistance) { rowClass.ClassIndex = i; currentDistance = distance; } } return(rowClass); }
private void Form1_Load(object sender, EventArgs e) { System.Timers.Timer timer1 = new System.Timers.Timer(); timer1.Interval = 100; timer1.Elapsed += Timer1_Tick; timer1.Start(); System.Timers.Timer timer2 = new System.Timers.Timer(); timer2.Interval = 5000; timer2.Elapsed += Timer2_Tick; timer2.Start(); IPEndPoint loaclEndPoint = new IPEndPoint(IPAddress.Any, 8001); server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); server.Bind(loaclEndPoint); Task.Run(() => { while (true) { try { UdpSocket.Receive(server); byte[] receiveData = new byte[1024]; EndPoint Remote = loaclEndPoint; server.ReceiveFrom(receiveData, 0, 1024, SocketFlags.None, ref Remote); string stringData = Encoding.UTF8.GetString(receiveData); ClientData clientData = JsonConvert.DeserializeObject <ClientData>(stringData); string IpPort = Remote.ToString();//获取发送端的IP及端口转为String备用 string ip = IpPort.Split(':')[0]; int port = int.Parse(IpPort.Split(':')[1]); if (clientData.Type == "Ping") { bool isHaveConnect = false; for (int i = 0; i < TableData.Count; i++) { if (TableData[i].No == clientData.No) { isHaveConnect = true; if (TableData[i].Ip == ip && TableData[i].Port == port) { TableData[i].HeartNum++; TableData[i].HeartTime = DateTime.Now; } else { TableData[i].Ip = ip; TableData[i].Port = port; TableData[i].HeartNum = 0; TableData[i].HeartTime = DateTime.Now; } } } if (isHaveConnect == false) { RowClass udpData = new RowClass(); udpData.No = clientData.No; udpData.Ip = ip; udpData.Port = port; udpData.HeartNum = 0; udpData.HeartTime = DateTime.Now; udpData.Type = clientData.Data; TableData.Add(udpData); } } else if (clientData.Type == "Get") // Get { List <RowClass> runData = new List <RowClass>(); if (clientData.Data.Contains("server")) { runData = TableData.Where(it => it.Type == clientData.Data).OrderByDescending(it => it.HeartTime).Take(1).ToList(); } if (clientData.Data.Contains("client")) { runData = TableData.Where(it => it.Type == clientData.Data).OrderByDescending(it => it.HeartTime).ToList(); } else if (clientData.Data == "All") { runData = TableData.ToList(); } SocketUdpSend(ip, port, "GetData", JsonConvert.SerializeObject(runData)); } else if (clientData.Type == "Send") // Get { RowClass SendClient = new RowClass(); SendClient = TableData.Where(it => it.No == clientData.No).FirstOrDefault(); if (SendClient != null) { SocketUdpSend(SendClient.Ip, SendClient.Port, "Send", IpPort); } } } catch { } } }); }