VC 之网络通信的技术之获取局域网其它计算机IP地址
VC++之网络通信技术之获取局域网其它计算机的IP地址
2010年11月22日星期一 21:59
一、创建对话框应用程序
二、编辑对话框资源
控件ID及标题
IDC_LIST_IP
IDC_GETOTHERIP
获取局域网其它计算机的IP地址(属性有“浮动”)
三、添加变量、函数
1、添加变量
2、添加消息响应函数
四、添加代码
1、于“GetOtherIPDlg.cpp”文件内添加包含语句
#include "stdafx.h"
#include "GetOtherIP.h"
#include "GetOtherIPDlg.h"
#include <Winsock2.h>
2、于“GetOtherIPDlg.cpp”文件内添加消息响应函数代码
void CGetOtherIPDlg::OnGetotherip()
{
// TODO: Add your control notification handler code here
struct hostent *host;
struct in_addr *ptr; // 检索IP地址
DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;
WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
CString strTemp;
if ( hEnum )
{
DWORD Count = 0xFFFFFFFF;
DWORD BufferSize = 2048;
LPVOID Buffer = new char[2048];
WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
NetResource = (NETRESOURCE*)Buffer;
strTemp.Format("局域网内的计算机名称及其IP地址为:");
m_ListIP.AddString(strTemp);
char szHostName[200];
unsigned int i;
for ( i = 0; i < BufferSize/sizeof(NETRESOURCE); i++, NetResource++ ) {
if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY )
{
if ( NetResource->lpRemoteName )
{
CString strFullName = NetResource->lpRemoteName;
if ( 0 == strFullName.Left(2).Compare("\\\\") )
strFullName =
strFullName.Right(strFullName.GetLength()-2);
//gethostname( szHostName, strlen( szHostName ) );
host = gethostbyname(strFullName);
if(host == NULL) continue;
ptr = (struct in_addr
*)host->h_addr_list[0];
// =. 分隔开IP:211.40.35.76.
int a = ptr->S_un.S_un_b.s_b1; // 211
int b = ptr->S_un.S_un_b.s_b2; // 40
int c = ptr->S_un.S_un_b.s_b3; // 35
int d = ptr->S_un.S_un_b.s_b4; // 76
strTemp.Format(" 计算机%d名称:%s-->IP地
址:%d.%d.%d.%d\r\n", i,strFullName,a,b,c,d);
m_ListIP.AddString(strTemp);
}
}
} //for 循环结束
delete Buffer;
WNetCloseEnum( hEnum );
} //第一层 if 结束
WSACleanup(); //调用WSACleanup函数进行WinSock的清理工作,以便释放其占用的资源
}
五、添加对象/库模块
点“工程”,点“设置”,点选“连接”,添加“MPR.LIB ws2_32.lib.”模块。
六、编译
七、运行
七、函数说明
1、WNetOpenEnum函数声明
DWORD WNetOpenEnum(DWORD dwScope,DWORD dwType,DWORD dwUsage,LPNETRESOURCE lpNetResource,LPHANDKE lphEnum)
dwScope:指定列举范围。
dwType:指定列举资源类型。
dwUsage:指定列举资源用法。
第一个参数dwScope为RESOURCE_GLOBALNET,则该参数被勿略。
lpNetResource:指向包含列举资源相关信息之NETRESOURCE结构的指针。
lphEnum:指向列举变量之句柄指针,为调用WNetEnumResource()函数做准备。
功能:开始一网络资源或存在的网络连接枚举值。
成功则返回非零值;失败则返回FALSE。
2、WNetEnumResource函数声明
DWORD WNetEnumResource(HANDLE hEnum,LPDWORD lpcCount,LPVOID lpBuffer,LPDWORD lpBufferSize)
hEnum:WNetOpenEnum()函数返回的标识某枚举实例之句柄。
lpcCount:指定枚举条目数量。
lpBuffer:指向取得枚举结果之缓冲区指针,用NETRESOURCE结构数组表示。
lpBufferSize:指定上述缓冲区大小。
功能:获取详细网络资源信息。
3、NETRESOURCE结构定义
typedef struct_NETRESOURCE{
DWORD
dwScope;
//指定列举范围
DWORD
dwType;
//指定列举资源类型
DWORD
dwDisplayType;
DWORD
dwUsage;
//指定列举资源用法
DWORD
dwScopeLocalname;
DWORD
dwRemoteName;
//指向网络中远程计算机名
DWORD
dwComment;
DWORD
dwPrivider;
}NETRESOURCE。
五招教你查出对方IP地址
五招教你查出对方IP地址与好友在网络上相互传输资料时,有时先要知道对方计算机的IP 地址,才能与对方建立信息传输通道。
那么对方的IP地址该如何搜查得到呢?这样的问题你也许会嗤之以鼻,的确,查询对方计算机的IP地址,实在简单得不值得一提;可是,要让你列举出多种IP地址搜查方法时,你可能就感到勉为其难了。
下面,本文就对如何快速、准确地搜查出对方好友的计算机IP地址,提出如下几种方法,相信能对大家有所帮助!1、邮件查询法使用这种方法查询对方计算机的IP地址时,首先要求对方先给你发一封电子邮件,然后你可以通过查看该邮件属性的方法,来获得邮件发送者所在计算机的IP地址;下面就是该方法的具体实施步骤:首先运行OutLook express程序,并单击工具栏中的“接受全部邮件”按钮,将朋友发送的邮件接受下来,再打开收件箱页面,找到朋友发送过来的邮件,并用鼠标右键单击之,从弹出的右键菜单中,执行“属性”命令;在其后打开的属性设置窗口中,单击“详细资料”标签,并在打开的标签页面中,你将看到“Received:from xiecaiwen (unknown [11.111.45.25])”这样的信息,其中的“11.111.45.25”就是对方好友的IP地址;当然,要是对方好友通过Internet中的WEB 信箱给你发送电子邮件的话,那么你在这里看到的IP地址其实并不是他所在工作站的真实IP地址,而是WEB信箱所在网站的IP地址。
当然,如果你使用的是其他邮件客户端程序的话,查看发件人IP 地址的方法可能与上面不一样;例如要是你使用foxmail来接受好友邮件的话,那么你可以在收件箱中,选中目标邮件,再单击菜单栏中的“邮件”选项,从弹出的下拉菜单中选中“原始信息”命令,就能在其后的界面中看到对方好友的IP地址了。
2、日志查询法这种方法是通过防火墙来对QQ聊天记录进行实时监控,然后打开防火墙的日志记录,找到对方好友的IP地址。
cc++实现获取域名的IP地址
cc++实现获取域名的IP地址c/c++实现获取域名的IP地址// GetHostIP.cpp : 定义控制台应⽤程序的⼊⼝点。
//#include "stdafx.h"#include <winsock2.h>#include <ws2tcpip.h>#include <stdio.h>#include <windows.h>#pragma comment(lib, "ws2_32.lib")int main(int argc, char **argv){//-----------------------------------------// Declare and initialize variables/** WSADATA结构被⽤来储存调⽤AfxSocketInit全局函数返回的Windows Sockets初始化信息。
* 这个结构被⽤来存储被WSAStartup函数调⽤后返回的Windows Sockets数据。
它包含Winsock.dll执⾏的数据。
*/WSADATA wsaData;int iResult;DWORD dwError; /*每个word为2个字节的长度,DWORD 双字即为4个字节,每个字节是8位*/int i = 0;struct hostent *remoteHost; /*域名*/char *host_name; /*主机名*/struct in_addr addr; /*ip*/char **pAlias;// Validate the parametersif (argc != 2) {printf("usage: GetHostIP hostname\n");return 1;}// 此处应添加的程序如下// 1. 当初始化winsocketiResult = WSAStartup(MAKEWORD(2,2),&wsaData);/* & 取地址*/// 2. 检查该socket是否初始化成功,即该socket是否等于0;如果初始化不成功,应当给出错误报警,并结束程序。
C语言获取Linux系统的IP地址和MAC地址
实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。
但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地址是多少,每块网卡分配了几个IP(一个网卡对应多个IP)等等。
这些信息往往需要通过ifconfig指令来获得,对于程序员来说,在代码中调用外部的shell 指令可不是个最佳方案,因为没人能保障不同平台、不同版本的ifconfig指令输出的格式是一致的。
本篇文章中将介绍通过ioctl函数实现上述需求。
#includeint ioctl(int fd, int request, … );返回:成功返回0,失败返回-1ioctl函数的参数只有3个,但却是Unix中少有的几个“家族类”复杂函数,这里摘录一段《Unix网络编程》一书中对ioctl函数的描述:在传统上ioctl函数是用于那些普遍使用、但不适合归入其他类别的任何特殊的系统接口……网络程序(一般是服务器程序)中ioctl常用于在程序启动时获得主机上所有接口的信息:接口的地址、接口是否支持广播、是否支持多播,等等。
ioctl函数的第一个参数fd,可以表示一个打开的文件(文件句柄)或网络套接字,第二个和第三个参数体现了函数的家族特色,参数二request根据函数功能分类定义了多组宏,而参数三总是一个指针,指针的类型依赖于参数二request。
因为ioctl的种类实在太多,这里只列出和本文相关的几个参数定义:分类参数二(宏)参数三描述接口SIOCGIFCONF struct ifconf 获得所有接口列表SIOCGIFADDR struct ifreq 获得接口地址SIOCGIFFLAGS struct ifreq 获得接口标志SIOCGIFBRDADDR struct ifreq 获得广播地址SIOCGIFNETMASK struct ifreq 获得子网掩码上表中列出了两个相关的结构体:struct ifconf 和struct ifreq,要了解ioctl函数的具体运用,首先要了解这两个结构:struct ifconf{int ifc_len;union{__caddr_t ifcu_buf;struct ifreq *ifcu_req;} ifc_ifcu;};struct ifreq{# define IFHWADDRLEN 6# define IFNAMSIZ IF_NAMESIZEunion{char ifrn_name[IFNAMSIZ];} ifr_ifrn;union{struct sockaddr ifru_addr;struct sockaddr ifru_dstaddr;struct sockaddr ifru_broadaddr;struct sockaddr ifru_netmask;struct sockaddr ifru_hwaddr;short int ifru_flags;int ifru_ivalue;int ifru_mtu;struct ifmap ifru_map;char ifru_slave[IFNAMSIZ];char ifru_newname[IFNAMSIZ];__caddr_t ifru_data;} ifr_ifru;};struct ifconf的第二个元素ifc_ifcu是一个联合,是指向struct ifreq结构的地址,通常是一组struct ifreq结构空间(每一个描述一个接口),struct ifconf的第一个元素ifc_len描述了struct ifreq结构空间的大小;结构struct ifreq也有两个元素,第一个元素ifr_ifrn内含一个字符串,用来描述接口的名称,比如“eth0″、”wlan0”等,第二个元素是联合,比较复杂,用来描述套接口的地址结构。
C#获取计算机名跟IP地址
label1.TabIndex = 0 ;
label2.TabIndex = 1 ;
label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
// 建立标签并且初始化
bel1 = new bel ( ) ;
bel2 = new bel ( ) ;
//先继承一个Label 类
label1.Location = new System.Drawing.Point ( 24 , 16 ) ;
private static string getIPAddress ( )
{
.IPAddress addr;
// 获得本机局域网IP地址
addr = new .IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ;
C#获取计算机名跟IP地址.txt每个女孩都曾是无泪的天使,当遇到自己喜欢的男孩时,便会流泪一一,于是坠落凡间变为女孩,所以,男孩一定不要辜负女孩,因为女孩为你放弃整个天堂。朋友,别哭,今夜我如昙花绽放在最美的瞬间凋谢,你的泪水也无法挽回我的枯萎~~~程序设计的主要思路及实现方法:
(1).读取计算机的名称:
// 设定标签的对齐方式
this.Text = "获得主机名称和IP地址!" ;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent ;
VC获取IP地址和MAC地址程序
#include <stdio.h> //该头文件声明了输入输出流函数
#include <stdlib.h> //该头文件定义了一些通用函数
#include <httpext.h> //该头文件支持HTTP请求
#include <windef.h> //该头文件定义了Windows的所有数据基本型态
#include <Nb30.h> //该头文件声明了netbios的所有的函数
#pragma comment(lib,"ws2_32.lib") //连接ws2_32.lib库.只要程序中用到Winsock API 函数,都要用到 Ws2_32.lib
ncb.ncb_command = NCBASTAT; //对网卡发送NCBSTAT命令,获取网卡信息
ncb.ncb_lana_num = lana_na[0]; //指定网卡号,这里仅仅指定第一块网卡,通常为有线网卡
strcpy((char*)ncb.ncb_callname, "*"); //远程系统名赋值为*
}
}
WSACleanup( ); //卸载Winsock库,并释放所有资源
}
}
//通过WindowsNT/Win2000中内置的NetApi32.DLL的功能来实现的。首先通过发送NCBENUM命令,获取网卡的
ncb.ncb_buffer = (unsigned char *)&Adapter; //指定返回的信息存放的变量
ncb.ncb_length = sizeof(Adapter);
vC++ 获取cpu信息,硬盘ID,网卡MAC地址_内部资料
目录摘要 (I)获取系统信息程序的开发1.设计目的 (1)2. 设计基本要求 (1)3. 设计内容 (1)4. 设计步骤 (1)5. 程序代码5.1头文件SysinfoView.h (5)5.2头文件Registry.h (6)5.3源文件SysinfoView.cpp (7)5.4源文件MainFrm.cpp (21)5.5源文件Registry.cpp (23)5.6源文件Sysinfo.cpp (26)6.设计成果 (26)总结 (27)参考文献 (28)摘要计算机系统信息包括硬件系统信息和软件系统信息。
硬件系统直接决定了软件系统运行的可行性,同时软件系统又反过来影响着硬件系统的运行。
因此,及时掌握计算机系统信息对于计算机用户来说尤其重要。
本课程设计介绍了如何利用Visual C++这一编程工具进行程序设计来获取计算机的系统信息。
关键词:Visual C++;计算机系统信息;程序设计获取系统信息程序的开发1.设计目的在学习了“VC++程序设计基础”课程的基础上,通过本编程设计练习,旨在加深对相关知识的理解,初步掌握VC++程序设计的基本设计方法,提高程序设计的基本技能及分析、解决编程问题的能力。
2. 设计基本要求计算机系统信息包括硬件系统信息和软件系统信息。
硬件系统直接决定了软件系统运行的可行性,同时软件系统又反过来影响着硬件系统的运行。
因此,及时掌握计算机系统信息对于计算机用户来说尤其重要。
本程序的主要功能如下:1)获取操作系统信息,显示该操作系统的版本号。
2)获取CPU运行速度3)获取内存大小,计算剩余内存大小和百分率4)获取网卡地址和本机机器的IP地址5)操作系统的操作(关闭系统、重启系统、快速重启系统)6)注册表的操作7)程序界面的鼠标拖动操作8)弹出菜单的应用3. 设计内容1)计算机安装操作系统后,操作系统将版本信息存放于注册表的特定位置:HKEY_LOCAL_MACHINE->”Software\\Microsoft\\Windows\\CurrentVersion\\Run\\”.因此只需要进行注册表的访问操作就可以得到相关的操作。
如何通过C获取IP地址及默认网关
示例程序:usi ng Sy stem.Net;usin g Sys tem;usin g Sys tem.M anage ment;usi ng Sy stem.Runti me.In terop Servi ces;pub lic c lassgetIP{ [Dl lImpo rt("I phlpa pi.dl l")]pr ivate stat ic ex ternint S endAR P(Int32 de st,In t32 h ost,r ef In t64 m ac,re f Int32 le ngth); [DllI mport("Ws2_32.d ll")]p rivat e sta tic e xtern Int32 ine t_add r(str ing i p); //获取本机的IP publ ic st ringgetLo calIP() { str ing s trHos tName = Dn s.Get HostN ame(); //得到本机的主机名IP HostE ntryipEnt ry =Dns.G etHos tByNa me(st rHost Name); //取得本机IPstrin g str Addr= ipE ntry.Addre ssLis t[0].ToStr ing(); retu rn(st rAddr); } //获取本机的MA Cpubli c str ing g etLoc alMac() { str ing m ac =null;Manag ement Objec tSear cherquery =new Mana gemen tObje ctSea rcher("SEL ECT * FROM Win32_Net workA dapte rConf igura tion") ; Ma nagem entOb jectC ollec tionquery Colle ction = qu ery.G et();forea ch( M anage mentO bject mo i n que ryCol lecti on ){ if(mo["IPEna bled"].ToS tring() == "Tru e") ma c = m o["Ma cAddr ess"].ToSt ring(); } re turn(mac);}//获取远程主机IPp ublic stri ng[]getRe moteI P(str ing R emote HostN ame){I PHost Entry ipEn try = Dns.GetHo stByN ame(R emote HostN ame);IPAdd ress[] IpA ddr = ipEn try.A ddres sList; stri ng[]strAd dr =new s tring[IpAd dr.Le ngth]; for(inti=0;i {strAd dr[i] = Ip Addr[i].To Strin g();}retur n(str Addr);}//获取远程主机MA Cpubli c str ing g etRem oteMa c(str ing l ocalI P, st ringremot eIP){I nt32ldest= ine t_add r(rem oteIP); //目的ipI nt32lhost= ine t_add r(loc alIP); //本地ip try{ Int64 ma cinfo = ne w Int64(); Int32 len = 6; intres = Send ARP(l dest,0, re f mac info, reflen); retu rn Co nvert.ToSt ring(macin fo,16); } ca tch(E xcept ion e rr) {Conso le.Wr iteLi ne("E rror:{0}",err.M essag e); }r eturn 0.To Strin g();} publ ic st aticvoidMain(strin g[] a rgs){g etIPgi =new g etIP(); Con sole.Write Line("本地网卡信息:"); Cons ole.W riteL ine(g i.get Local IP()+ " - " +gi.ge tLoca lMac()); Con sole.Write Line("\n\r远程网卡信息:"); st ring[] tem p = g i.get Remot eIP("scmob ile-t j2");for(i nt i=0;i { Co nsole.Writ eLine(temp[i]);} Cons ole.W riteL ine(g i.get Remot eMac("192.168.0.3","192.168.0.1"));}} 。
VC 之网络通信技术之获取局域网其它计算机的IP地址
VC++之网络通信技术之获取局域网其它计算机的IP地址2010年11月22日星期一 21:59一、创建对话框应用程序二、编辑对话框资源控件ID及标题IDC_LIST_IPIDC_GETOTHERIP获取局域网其它计算机的IP地址(属性有“浮动”)三、添加变量、函数1、添加变量2、添加消息响应函数四、添加代码1、于“GetOtherIPDlg.cpp”文件内添加包含语句#include "stdafx.h"#include "GetOtherIP.h"#include "GetOtherIPDlg.h"#include <Winsock2.h>2、于“GetOtherIPDlg.cpp”文件内添加消息响应函数代码void CGetOtherIPDlg::OnGetotherip(){// TODO: Add your control notification handler code herestruct hostent *host;struct in_addr *ptr; // 检索IP地址DWORD dwScope = RESOURCE_CONTEXT;NETRESOURCE *NetResource = NULL;HANDLE hEnum;WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );WSADATA wsaData;WSAStartup(MAKEWORD(1,1),&wsaData);CString strTemp;if ( hEnum ){DWORD Count = 0xFFFFFFFF;DWORD BufferSize = 2048;LPVOID Buffer = new char[2048];WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );NetResource = (NETRESOURCE*)Buffer;strTemp.Format("局域网内的计算机名称及其IP地址为:");m_ListIP.AddString(strTemp);char szHostName[200];unsigned int i;for ( i = 0; i < BufferSize/sizeof(NETRESOURCE); i++, NetResource++ ) {if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY ){if ( NetResource->lpRemoteName ){CString strFullName = NetResource->lpRemoteName;if ( 0 == strFullName.Left(2).Compare("\\\\") )strFullName =strFullName.Right(strFullName.GetLength()-2);//gethostname( szHostName, strlen( szHostName ) );host = gethostbyname(strFullName);if(host == NULL) continue;ptr = (struct in_addr*)host->h_addr_list[0];// =. 分隔开IP:211.40.35.76.int a = ptr->S_un.S_un_b.s_b1; // 211int b = ptr->S_un.S_un_b.s_b2; // 40int c = ptr->S_un.S_un_b.s_b3; // 35int d = ptr->S_un.S_un_b.s_b4; // 76strTemp.Format(" 计算机%d名称:%s-->IP地址:%d.%d.%d.%d\r\n", i,strFullName,a,b,c,d);m_ListIP.AddString(strTemp);}}} //for 循环结束delete Buffer;WNetCloseEnum( hEnum );} //第一层 if 结束WSACleanup(); //调用WSACleanup函数进行WinSock的清理工作,以便释放其占用的资源}五、添加对象/库模块点“工程”,点“设置”,点选“连接”,添加“MPR.LIB ws2_32.lib.”模块。
VC++获得局域网中计算机的ip
m_grid.InsertItem(j,0);
CString sName=nRes2->lpRemoteName;
sName=sName.Right(sName.GetLength()-2);
m_grid.SetItemText(j,0,sName);
CString str="";
struct hostent * pHost;
(3)WnetCloseEnum函数
WnetCloseEnum函数用于结束一次枚举操作。
语法:
DWORD WnetCloseEnum( HANDLE hEnum );
hEnum:由WnetOpenEnum函数的参数lphEnum传入。
(4)gethostbyname函数
gethostbyname函数能够通过计算机的名称返回其网络信息,这个信息中包括IP地址。
(1)WnetOpenEnum函数
WnetOpenEnum函数用于启动对网络资源进行枚举的过程。
语法:
DWORD WnetOpenEnum( DWORD dwScope,DWORD dwType,DWORD dwUsage,
LPNETRESOURCE lpNetResource,LPHANDLE lphEnum );
nRes=(NETRESOURCE*)Buf;
for(DWORD n=0;n<Count;n++,nRes++)
{
DWORD Count1=0xFFFFFFFF;
Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,nRes,&lphEnum);
VC之网络通信技术之获取局域网其它计算机IP地址
VC++之网络通信技术之获取局域网其他计算机的IP 地址2021 年 11 月 22 日星期一 21:59一、创立对话框应用程序二、编写对话框资源控件 ID 及标题IDC_LIST_IPIDC_GETOTHERIP获取局域网其他计算机的IP 地址 ( 属性有“浮动〞)三、增加变量、函数1、增加变量2、增加信息响应函数四、增加代码1 、于“ GetOtherIPDlg.cpp 〞文件内增加包含语句#include "stdafx.h"#include "GetOtherIP.h"#include "GetOtherIPDlg.h"#include <Winsock2.h>2 、于“ GetOtherIPDlg.cpp 〞文件内增加信息响应函数代码void CGetOtherIPDlg::OnGetotherip(){//TODO: Add your control notification handler codehere struct hostent *host;struct in_addr *ptr; //检索IP地址DWORD dwScope = RESOURCE_CONTEXT;NETRESOURCE *NetResource = NULL;HANDLE hEnum;WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );WSADATA wsaData;WSAStartup(MAKEWORD(1,1),&wsaData);CString strTemp;if ( hEnum ){DWORD Count = 0xFFFFFFFF;DWORD BufferSize = 2048;LPVOID Buffer = new char[2048];WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );NetResource = (NETRESOURCE*)Buffer;strTemp.Format(" 局域网内的计算机名称及其IP 地址为: ");m_ListIP.AddString(strTemp);char szHostName[200];unsigned int i;for ( i = 0; i < BufferSize/sizeof(NETRESOURCE); i++,NetResource++ ) {if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY ){if ( NetResource->lpRemoteName ){CString strFullName = NetResource->lpRemoteName;if ( 0 == strFullName.Left(2).Compare("\\\\") )strFullName =strFullName.Right(strFullName.GetLength()-2);//gethostname( szHostName, strlen( szHostName ) );host = gethostbyname(strFullName);if(host == NULL) continue;ptr = (struct in_addr*)host->h_addr_list[0];// =.分分开IP:211.40.35.76.int a = ptr->S_un.S_un_b.s_b1; // 211int b = ptr->S_un.S_un_b.s_b2; // 40int c = ptr->S_un.S_un_b.s_b3; // 35int d = ptr->S_un.S_un_b.s_b4; // 76strTemp.Format("计算机 %d名称: %s-->IP 地址: %d.%d.%d.%d\r\n", i,strFullName,a,b,c,d);m_ListIP.AddString(strTemp);}}} //for循环结束delete Buffer;WNetCloseEnum( hEnum );} // 第一层 if 结束WSACleanup(); //调用WSACleanup函数进行WinSock的清理工作,以便释放其占用的资源}五、增加对象 / 库模块点“工程〞,点“设置〞,点选“连接〞,增加“ MPR.LIB ws2_32.lib. 〞模块。
