操作仓库来ping计较机
副标题#e#
以下的这个类是办理一个很普通的问题的:在一台WIN95的计较机上怎么样操作MSTCP仓库去PING别的一台计较机。虽然,这个类在NT3.51和NT4上也可以用。显然,MicroSoft公司不会那么笨,在WIN系统中又别的结构这么一个单独的机制来办理这个问题,让原来就巨大的WIN系统越发巨大。那么,我们只能用ICMP DLL本身来办理这个问题了。不外,很让人失望,MicroSoft公司直到Winsock 2.0也没有办理这个问题。
困难就是:给一个计较机的名字,可能一台计较机的IP地点,怎么样去PING它,并且获得它的响应时间。所以我们用了ICMP DLL,而对付一些SOCKET布局来说,在CSocket中已经全部都有界说了。所以,下面的类是一个CSocket的子类,它将会有更好的成果来办理更多的问题。不外你得先获得ICMPAPI.H,ICMAPI.CPP,ICMP.LIB和IPEXPORT.H,IPEXPORT.CPP这些文件,这些文件应该加在你的工程中。这些文件你可以在Microsoft Developers Network的光盘上获得,不外在微软公司的主页上也能拿到,并且更新。
类中有4个民众函数,如下:
unsigned long ResolveIP(CString strIP)
unsigned long ResolveName(CString strHostName)
CString GetIP(unsigned long ulIP)
DWORD PingHost(unsigned long ulIP, int iPingTimeout)
ResolveIP(CString strIP)函数利用一个IP地点的字符串来作为参数,返回值是IP地点值。
ResolveName(CString strHostName)函数利用一计较机名的字符串来作为参数,颠末DNS可能WINS的理会,返回值是被PING计较机的IP 地点,留意它利用了GetHostByName模块化。
GetIP(unsigned long ulIP)函数是以IP地点作为参数(留意是IP地点),返回值是一个暗示IP地点的字符串。
PingHost(unsigned long ulIP, int iPingTimeout)函数,第1个参数是IP地点(留意是IP地点,而不是IP地点的字符串),第2个参数是暗示时间值的,暗示隔断时间的。函数成果是,去PING一台计较机,返回值是PING的响应时间。
#p#副标题#e#
以下是代码:
//*
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//icmpecho.h
//-------------------------------------------------------------------------
//------------------------------------------------------------------------
//*
class CIcmpEcho : public CSocket
{
// Attributes
public:
// Operations
public:
CIcmpEcho();
virtual ~CIcmpEcho();
unsigned long ResolveIP(CString strIP);
unsigned long ResolveName(CString strHostName);
DWORD PingHost(unsigned long ulIP, int iPingTimeout);
CString GetIP(unsigned long ulIP);
// Overrides
public:
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CIcmpEcho)
/