Статьи по программированию
примеры программного кода
Delphi, Kylix, C, C++, SQL, Visual Basic, Bash, Assembler, 1С
Qt, KOL, MFC, Rx Library, Windows, Linux, Mac OS
CPing - простой ping хоста из под Windows 95 и Windows NT
Опубликовано codeLocker в 06.08.2008 в 12:21.
Что он делает?
Впринципе это аналог встроенной в Windows команды ping. Данная команда позволяет узнать - работает ли в интернете нужный сервер. Главный плюс данного класса в том, что он работает сразу в двух операционных системах Windows 95 и Windows NT, чего не делают его аналоги.
Как его использовать?
* Создайте MFC проект
Не указывайте визарду, что хотите использовать Windows Sockets
Не включайте #include afxsock.h
Не вызывайте AfxSocketInit()
* Скопируйте CPing.cpp и CPing.h в директорию Вашего проекта
* Добавьте CPing.cpp в Ваш проект
* В установках C++ Вашего проекта удалите /Yu"stdafx.h" в отладочной и релизовой версиях
* добавьте в Ваш stdafx.h #include
* В закладке линковщика добавьте WSOCK32.LIB
* Добавьте #include "CPing.h" во все файлы которым поторебуется использовать класс CPing
* Создайте объект CPing и вызовите функцию-член Ping()
Функция CPing::Ping()
CPing::Ping
BOOL Ping( char* strHost );
Возвращаемое значение
Ненулевое, если host указанный в strHost ответил; иначе 0.
Параметры
strHost указатель на имя или IP адрес пингуемого узла (строка должна завершаться нулём). Если strHost указывает на IP адрес, то он должен быть в формате "XXX.XXX.XXX.XXX".
Примечания
Если имя узла, указанного в strHost не может быть вычислено, функция вернёт 0. Возвращаемое значение в виде 0 так же может указывать на то что узел не отвечает.
Пример
Следующий пример демонстрирует использование CPing::Ping.
// пример для CPing::Ping
//пингуем шлюз
BOOL bResult = ping.Ping("192.168.0.254");
if( bResult )
{
//шлюз работает нормально
//давайте пинганём пару сайтов.
if(ping.Ping("www.codeguru.com") ||
ping.Ping("www.netscape.com"))
{
//работают нормально
AfxMessageBox("Everything is A OK.");
}
else
{
//ошибка DNS или узлы не отвечают.
AfxMessageBox("Can't ping outside the subnet.
It may be a DNS problem or the ISP's fault.");
}
}
else
{
//тогда шлюз выключен
AfxMessageBox("The gateway or router is down.");
}
Некторые понятия, которые необходимо запомнить
* Этот класс использует ICMP.DLL. поэтому если у Вас нет этого файла, то установите его.
* Этот класс динамически загружает ICMP.DLL в конструктор. Поэтому не создавайте несколько объектов CPing!
* Этот класс также вызывает WSAStartup(); в конструкторе и WSACleanup(); в деструкторе. Поэтому не создавайте несколько объектов CPing! Также, если Ваше приложение вызывает WSAStartup() и WSACleanup(), то я предлагаю вытереть вызовы WSAStartup() и WSACleanup() в моём конструкторе и деструкторе.
* Данный класс не использует для своей работы другие MFC классы. Поэтому если Вы не используете в своём приложении MFC, то прийдётся создать файл StdAfx.h file или взять #include "StdAfx.h" не из моего класса. Надо будет добавить #include и #include .
Материал похожий на CPing - простой ping хоста из под Windows 95 и Windows NT
- Как на VC5.0 создать окошко на full-screen?
- Разработка DLL-модулей расширения MFC на языке Visual C++
- Определение размера буфера передачи данных контроллера
- CSocksifiedSocket - или как установить коннект через SOCKS4/5 прокси
- COM. Агрегация и нотификация вообще и для Delphi в частности