欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
Blog升级-论坛搬迁 纯资源DLL的编写
多云  枚举计算机名称及其IP地址
[ 发布日期:20年前 (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;
WNetOpenEnumdwScopeNULLNULL
             
NULL, &hEnum );

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

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

    
char szHostName[200];
    
unsigned int i;

    for ( 
0
        
BufferSize/sizeof(NETRESOURCE); 
        
i++, NetResource++ )
    {
        if ( 
NetResource->dwUsage == 
            
RESOURCEUSAGE_CONTAINER && 
            
NetResource->dwType == 
            
RESOURCETYPE_ANY )
        {
            if ( 
NetResource->lpRemoteName )
            {
                
CString strFullName 
                    
NetResource->lpRemoteName;
                if ( 
== 
                    
strFullName.Left(2).Compare("\\\\") )   
                    
strFullName 
                        
strFullName.Right(
                            
strFullName.GetLength()-2);

                
gethostnameszHostName
                    
strlenszHostName ) );
                
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;
    
WNetCloseEnumhEnum ); 
}

WSACleanup();
 


引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/60
复制引用地址https://www.rickw.cn/trackback/60/GBK
[ 分类:C\C++相关  | 查看:1338 ]

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

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