欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
Blog升级-论坛搬迁 纯资源DLL的编写
多云  枚举计算机名称及其IP地址
[ 发布日期:22年前 (2005-04-03) ]   [ 来自:本站原创 ] [分类:C\C++相关]
枚举网络上的计算机名称及其IP地址

包含头文件 winsock2.h
引用库 ws2_32.lib mpr.lib


[复制到剪贴板]

CString strTemp
;
struct hostent *host;

struct in_addr *ptr; // To retrieve the IP Address

DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;
WNetOpenEnum( dwScope, NULL, NULL,
NULL, &hEnum );

WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);

if (
hEnum )
{
DWORD Count = 0xFFFFFFFF;
DWORD BufferSize = 2048;
LPVOID Buffer = new char[2048];
WNetEnumResource( hEnum, &Count,
Buffer, &BufferSize );
NetResource = (NETRESOURCE*)Buffer;

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];

// Eg. 211.40.35.76 split up like this.
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("%s --> %d.%d.%d.%d",
strFullName,a,b,c,d);
AfxMessageBox(strTemp);
}
}
}

delete Buffer;
WNetCloseEnum( hEnum );
}

WSACleanup();
?>
如果文章对您有帮助,给个赞赏吧!
引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/60
复制引用地址https://www.rickw.cn/trackback/60/GBK
[ 分类:C\C++相关  | 查看:2321 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2026 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5