public void SendCommand(string command) { udp = new UdpClient(); byte[] message = Encoding.Unicode.GetBytes(command); int sended = 0; try { while (sended < message.Length) { foreach (DataGridViewRow dgr in dataGridView1.SelectedRows) //Всем выделенным хостам { sended = udp.Send(message, message.Length, ResponceParse.GetIp_fromName(dgr.Cells[0].Value.ToString())); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { udp = null; } }
/// <summary> /// Удаление выделенных элементов из datagridview и списка хостов /// </summary> void deleteSelectedInDGrid() { foreach (DataGridViewRow dgr in dataGridView1.SelectedRows) //Всем выделенным хостам { ResponceParse.Remove(dgr.Cells[0].Value.ToString()); //Убрать хост из списка dataGridView1.Rows.Remove(dgr); } }
void FillDatagrid(ResponceParse parser) { dataGridView1.Rows.Add(); int i = this.dataGridView1.Rows.Count - 1; dataGridView1.Rows[i].Cells[0].Value = parser.hostName; dataGridView1.Rows[i].Cells[1].Value = parser.ip.ToString(); dataGridView1.Rows[i].Cells[2].Value = parser.uptime; }
//Прием UDP-сообщения public void ReceiveMessage() { listeningSocket.Bind(new IPEndPoint(IPAddress.Any, 2200)); try { while (true) { byte[] data = new byte[256]; // буфер для получаемых данных 256 IPEndPoint localIP = new IPEndPoint(IPAddress.Any, 0); EndPoint remoteIp = (EndPoint)localIP; listeningSocket.ReceiveFrom(data, ref remoteIp); string message = Encoding.Unicode.GetString(data); IPEndPoint remoteFullIp = remoteIp as IPEndPoint; if (message != "") { parser = new ResponceParse(message, remoteFullIp.Address); if (parser.type == "BROADCAST") { if (!ResponceParse.ContainsClient(remoteFullIp)) { ResponceParse.Clients.Add(parser); (this.Controls["dataGridView1"] as DataGridView).Invoke((MethodInvoker)(delegate() { FillDatagrid(parser); })); } } else if (parser.type == "INFO") { MessageBox.Show("Время работы для: " + parser.hostName + " составляет " + parser.uptime); } } if (stopReceive) { break; } } } catch (Exception ex) { var w32ex = ex as Win32Exception; if (w32ex.ErrorCode != 10004) { MessageBox.Show("Ошибка при приеме сообщения: " + ex.Message); } } }