确定本地计算机 IP 地址的类






2.80/5 (5投票s)
2002年8月17日
2分钟阅读

96760

1491
这是一个用于确定本地计算机 IP 地址的类,
引言
我想感谢 Igor Proskuriakov、Len Holgate 和 Farooque Khan。我创建这个类的目的是以编程方式确定分配给本地机器的 IP 地址。该类将以 CString、主机字节顺序的 DWORD 和网络字节顺序的 DWORD 形式返回机器的 IP 地址。IPAddressBase 类的用法
该类的对象将包含一个 IP 地址值并执行格式转换。 IP 地址存储在 CString 中。已提供成员函数以将存储的 CString 转换为网络字节顺序 DWORD 或主机字节顺序 DWORD。默认构造函数将类的数据成员m_csAddress
初始化为 "127.0.0.1"。 void SetHBO(DWORD dwInValue);
成员函数 SetHBO(DWORD dwInValue)
接受一个 DWORD 值(以主机字节顺序),并将该值转换为 CString。然后将 CString 等效值存储在 m_csAddress
中; void SetNBO(DWORD dwInValue);
成员函数 SetNBO(DWORD dwInValue)
接受一个 DWORD 值(以网络字节顺序),并将该值转换为 CString。然后将 CString 等效值存储在 m_csAddress
中; void SetString(CString csInString);
成员函数 SetString(CString csInString)
接受一个 CString 并将该值存储在 m_csAddress
中; DWORD GetHBO()const;
成员函数 GetHBO()const
将 m_csAddress
转换为主机字节顺序的 DWORD 并返回该转换后的值。 DWORD GetNBO()const;
成员函数 GetNBO()const
将 m_csAddress
转换为网络字节顺序的 DWORD 并返回该转换后的值。 CString GetString()const;
成员函数 GetString()const
返回 m_csAddress
。LocalIPQuery 类的用法
此类执行机器 IP 地址的提取。此类包含两种不同的提取方法,程序员可以使用条件编译来选择。用于保存提取的 IP 地址的容器是一个 STL 向量。LIPQ_MULTI 方法源自 Farooque Khan 的 "Using IP Helper API’s" 文章。此方法获取本地机器的 TCP/IP 表,并提取本地机器上的每个活动唯一 IP 地址。提取的值作为 IPAddressBase 对象存储在向量中。
LIPQ_PORTABLE 方法来自 http://tangentsoft.net/wskfaq/examples/ipaddr.html。此方法从它创建的套接字中提取本地机器 IP 地址。提取的值作为 IPAddressBase 对象存储在向量中。此方法只会提取单个 IP 地址,但它是可移植的,因为它使用套接字。
方法的选择在 LocalIPQuery.h 文件中完成。要使用 LIPQ_MULTI,请在编译之前验证 LocalIPQuery 头文件是否配置如下
// User must choose which method they want to use //#define USE_THIS LIPQ_PORTABLE #define USE_THIS LIPQ_MULTI要使用 LIPQ_PORTABLE,请在编译之前验证 LocalIPQuery 头文件是否配置如下
// User must choose which method they want to use #define USE_THIS LIPQ_PORTABLE //#define USE_THIS LIPQ_MULTI