08:55 Урок №8 - Ping в проекте WinForms | |
Добрый день мои читатели! Сегодня мы поговорим о том, как через проект Windows Forms посылать пинги, такая функция периодически требуется для проверки наличия связи с сервером или каким-то адресом. Начнем мы как всегда с библиотек, которые потребуются нам в нашем проекте! В самом начале мы прописываем следующие библиотеки : После того, как мы прописали наши библиотеки, мы создадим макет формы, лично я добавил TextBox в который мы будем вводить адрес, кнопку запуска функции, и пару Label, один из которых будет показывать статус. Далее мы пишем функцию пинга, но перед этим мы создадим переменную address, в которую мы будем записывать наш адрес : Итак, в самом начале нашей функции мы создаем элемент типа Ping с именем png, далее мы пишем код отправки и обработчика IP пингов, и демонстрируем результаты в нашем Label; Теперь нам надо прописать код в кнопке, для этого мы кликаем два раза по кнопке и она создаст свою функцию, в которую мы записываем следующее: В функцию кнопки мы делаем "защиту от дурака", т.е. чтобы наша функция не сработала с пустым полем pingbox и пустой переменной address. Теперь проверим как это работает! Вот такой вот простенький урок на сегодня! На этом мы ещё не заканчиваем! давайте теперь попробуем усложнить нашу программу, а именно, добавим Лог событий на время работы программы. Итак, для формирования лога мы добавим на форму RichTextBox и теперь наша форма имеет следующий вид : Теперь идем в функцию пинга и добавляем строчки, которые будут формировать наш лог : Теперь разберем нашу строчку, в функцию мы добавляем logbox.AppendText, AppendText не будет удалять предыдущий текст, а будет к существующему тексту добавлять строчки. "Start log...\r\n" - Это просто вступительный текст перед началом логирования, чтобы можно было проще разделить строчки, к какому пингу они будут относиться. "Адрес: "+replict.Address.ToString() - Этой строчкой мы выводим наш IP Адрес который мы пингуем в данный момент времени. "\r\nВремя: "+replict.RoundtripTime - Эта переменная показывает нам, за какое время (в мс) прошел наш пакет до сервера. "\r\nВремя жизни пакета:"+replict.Options.Ttl - Эта строчка показывает нам время жизни пакета данных в протоколе IP (предельно допустимое время его пребывания в системе), время актуальности записей DNS. "\r\nФрагментирование: "+replict.Options.DontFragment - Эта строчка показывает нам фрагментируется ли наш IP пакет. Фрагментация IP-пакета увеличивает нагрузку на центральный процессор и снижает скорость передачи полезных данных этого пакета (на 2÷50 % в Ethernet сети в зависимости от длины кадра), поэтому её стараются избегать. "\r\nРазмер пакета: "+replict.Buffer.Length - Эта строчка указывает нам длину пакета в байтах, по стандарту 32 байта "\r\nEnd Log...\r\n" - Эта строчка просто показывает нам завершение лога для данного пинга. Выглядит это следующим образом : Наша программа посылает 1 пинг и показывает результаты, теперь посмотрим, как это реализовано в cmd.exe : Как мы видим, данные отображаются фактически одни и те же, только в разной форме представлены :) Стоит ли на этом останавливаться? Давайте ещё кое-что сделаем! например, сохранение лога в файл! (На всякий случай). В самом начале нашего проекта пропишем ещё одну библиотеку: Using System.IO;
Теперь на нашу форму добавим ещё одну кнопку, и наша форма примет следующий вид: После чего мы два раза нажимаем по нашей кнопке "Записать" и прописываем следующий код : File.WriteAllText("log.txt", logbox.Text);
Эта команда создаст файл log.txt в том месте, откуда запустила наша программа, также мы можем для удобства прикрутить сюда FolderBrowserDialog и тогда у пользователя будет выбор директории куда сохранять файл с логом. Теперь посмотрим как это выглядит:
pingstat.Text = "Log file create"; Вот такой вот у нас с вами получился урок про одну из простых, но необходимых функций с пингом сервера и создание лог файла! Не забывайте заходить к нам в группу в Вконтакте, а также подписывайтесь на наш канал на YouTube | |
Категория: Уроки по C# | Просмотров: 1986 | |
Всего комментариев: 0 | |