CPing -- Простой ping хоста из под Windows 95 и Windows NT
Автор Robert Hamilton.
Компилятор: Visual C++ 5.0
Что он делает?
Впринципе это аналог встроенной в 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 <winsock.h>
- В закладке линковщика добавьте 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
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 <windows.h> и #include
<winsock.h>.
Скачать откомпилированную
демонстрашку - 67.2 KB
Скачать исходник демонстрашки -
28.6 KB
Скачать исходник - 1.93 KB
|