扫描局域网内的其他计算机
本代码可以获取局域网内的其他计算机的名称和ip地址。
如图所示:本地IP地址为:10.128.8.176.而通过程序枚举出如下的局域网内的计算机信息。对于这些计算机,在不联网的情况下,我通过ping的方式,可以与这些计算机ping通,说明这些计算机是真实存在在局域网的范畴内。
核心代码:
void CEnumHostsDlg::EnumHosts(CStringArray& list)
{
//先清空列表
list.RemoveAll();
CString strTemp;
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);
if ( hEnum ) //如果句柄有效
{
DWORD Count = 0xFFFFFFFF;
DWORD BufferSize = 2048;
LPVOID Buffer = new char[2048];
// 调用WSAStartup后调用WNetEnumResource做进一步的枚举工作
WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
NetResource = (NETRESOURCE*)Buffer;
char szHostName[200];
for ( unsigned int 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("%s --> %d.%d.%d.%d",strFullName,a,b,c,d);
// 加入到链表中
list.Add(strTemp);
}
}
}
delete Buffer;
// 结束枚举工作
WNetCloseEnum( hEnum );
}
// 卸载Winsock.dll
WSACleanup();
}
详细代码在:http://download.csdn.net/detail/u010951938/9461509
扫描局域网内的其他计算机相关推荐
- nmap 扫描局域网内的机器 扫描指定电脑的开放的端口
1. 扫描局域网内的机器 nmap -sP 192.168.1.0/24 nmap -sS 192.168.1.0/24 2.扫描指定机器的端口开放 nmap -sS 192.168.1.61 -p ...
- 微信小程序调用局域网服务器,微信小程序中使用mdns api扫描局域网内的打印机...
在微信的小程序api中,有个wx.startLocalServiceDiscovery(Object object),开始搜索局域网下的 mDNS 服务.它可以搜索局域网内的网络打印机. 下面的代码片 ...
- 用计算机名共享不了,局域网内无法用计算机名访问共享的解决办法
<局域网内无法用计算机名访问共享的解决办法>由会员分享,可在线阅读,更多相关<局域网内无法用计算机名访问共享的解决办法(1页珍藏版)>请在人人文库网上搜索. 1.局域网内无法用 ...
- 【网络】如何扫描局域网内所有设备的ip和mac地址
原文:https://www.jianshu.com/p/b2e68a5b88f2 cmd 输入: for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.0 ...
- Mac扫描局域网内连接设备IP及MAC地址并查看对应IP开放端口
前言 因为有远程调试的需要,所以我需要知道同一局域网内,另一个设备的IP是多少. 好像网上有一个叫nmap的工具也挺专业的,不过我一看到APP Store里面就有一个现成的免费软件,干脆就下载下来试了 ...
- python扫描局域网端口和ip_我想用python扫描局域网内的ip和mac地址,需要什么第三方库...
匿名用户 1级 2016-08-12 回答 MAC地址也叫物理地址.硬件地址或链路地址,由网络设备制造商生产时写在硬件内部.IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MA ...
- 网络中搜不到局域网内的其他计算机,局域网中搜不到其他计算机怎么修复
通过网上邻居或查看网络计算机和设置操作时,看不到局域网中其它计算机,这是怎么回事呢?下面是小编给大家整理的一些有关局域网中搜不到其他计算机的修复方法,希望对大家有帮助! 局域网中搜不到其他计算机的修复 ...
- linux 扫描局域网内所有主机
yum install nmapnmap -sL 192.168.31.0/24 nmap 常用命令介绍: 扫描单个主机: nmap 192.168.43.118 扫描单个子网主机: nmap 192 ...
- C#语言实例源码系列-扫描局域网内的所有IP和端口
专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册
最新文章
- 介绍两个好玩的和Github相关的Chrome扩展
- 冒泡排序_python实现冒泡排序
- 三甲医院副主任博士医师,工资竟然不如程序员老公的一半!
- python 导入 包
- HDLBits 系列(42)根据仿真波形来设计电路之时序逻辑
- Ubuntu 安装firefox中文版 (启用google翻译功能)
- Exchange系列—Exchange自带灾难恢复工具使用
- 你所不知道的端口号知识!
- SendMessage函数的常用消息及其应用
- thymeleaf比较符号问题
- 页式管理--物理地址计算问题小结
- Java关键字fymd,JAVA程式碼一直被foritfy檢出有path manipulation
- CentOS7网卡驱动安装过程
- google ads 关联 firebase 进行广告投放配置
- validate简介及使用方法与默认的校验规则
- 域控制器组策略:部署软件自动下发
- 简单明了的java反射机制
- 【知识图谱】大数据环境下知识工程的机遇和挑战
- 【Hexo】选择更高级的Markdown渲染器
- 机器人动力学 拉格朗日乘子法求解动力学方程