65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.80/5 (5投票s)

2002年8月17日

2分钟阅读

viewsIcon

96760

downloadIcon

1491

这是一个用于确定本地计算机 IP 地址的类, 使用 iphlpapi 或套接字, 并可在几种标准格式之间进行转换

引言

我想感谢 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()constm_csAddress 转换为主机字节顺序的 DWORD 并返回该转换后的值。
	DWORD GetNBO()const;
成员函数 GetNBO()constm_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

对话框应用程序

对话框应用程序显示提取的 IP 地址,以及将 LocalIPQuery 类与 IP 地址控件一起使用的一种方法。

© . All rights reserved.