在实际的应用程序中,经常需要在程序检索整个局域网络,获取局域网络中的计算机名和IP地址。如果想获得计算机名主要使用了Windows API函数库中的WnetOpenEnum、WnetEnumResource和WnetCloseEnum函数,而在使用这些函数之前,需要初始化向程序中导入mpr.lib库和头文件winnetwk.h;如果想获得计算机IP主要使用了gethostbyname函数,在使用该函数之前,需要导入ws2_32.lib库和头文件afxsock.h。其中各函数的介绍如下:
(1)WnetOpenEnum函数
WnetOpenEnum函数用于启动对网络资源进行枚举的过程。
语法:
DWORD WnetOpenEnum( DWORD dwScope,DWORD dwType,DWORD dwUsage, |
表18.3 WnetOpenEnum函数参数说明
参 数 名 称 参 数 说 明
DwScope 表示网络枚举的范围
DwType 表示枚举的资源类型
DwUsage 表示枚举资源的用法
LpNetResource 用于返回网络资源信息
LphEnum 表示枚举的资源句柄指针
(2)WnetEnumResource函数
WnetEnumResource函数用于枚举网络资源。
语法:
DWORD WnetEnumResource( HANDLE hEnum,LPDWORD lpcCount,LPVOID lpBuffer |
表18.4 WnetEnumResource函数参数说明
参 数 名 称 参 数 说 明
hEnum 由WnetOpenEnum函数的参数lphEnum传入,表示枚举的资源句柄
lpcCount 用来决定获取的资源数目最大值
lpBuffer 向枚举结果存放的缓冲区地址
lpBufferSize 指向枚举结果存储缓冲区大小的变量地址
(3)WnetCloseEnum函数
WnetCloseEnum函数用于结束一次枚举操作。
语法:
DWORD WnetCloseEnum( HANDLE hEnum ); |
hEnum:由WnetOpenEnum函数的参数lphEnum传入。
(4)gethostbyname函数
gethostbyname函数能够通过计算机的名称返回其网络信息,这个信息中包括IP地址。
语法:
struct hostent FAR * gethostbyname ( const char FAR * name ); |
name:包含计算机名称的字符串。
下面以一个具体实例介绍如何获得网络计算的名称和IP。程序设计具体步骤如下。
ch1803实例位置:mr/18/sl/03
(1)新建一个基于对话框的应用程序,设计对话框资源如图18.5所示。
图18.5 主对话框资源设计窗口
(2)在对话框的OnInitDialog方法中获取网络中的计算机和IP。
//初始化网络库 |
图18.6 获取局域网计算机名称和IP