社区
网络编程
帖子详情
高分求救!~!~如何编程实现查找局域网内其它主机的IP和主机名????
cxn0808
2003-05-11 11:28:36
吾正在用VC编写一点对点聊天程序,连接时要求输入对方IP,现在我要通过函数调用实现局域网内的其它主机的IP和主机名,但苦于实在找不到相应的函数,希望名位高手能帮小弟一把!~!~!谢谢先了!~!~!
...全文
166
2
打赏
收藏
高分求救!~!~如何编程实现查找局域网内其它主机的IP和主机名????
吾正在用VC编写一点对点聊天程序,连接时要求输入对方IP,现在我要通过函数调用实现局域网内的其它主机的IP和主机名,但苦于实在找不到相应的函数,希望名位高手能帮小弟一把!~!~!谢谢先了!~!~!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huangbeyond
2003-05-12
打赏
举报
回复
(转贴)
枚举出局域网上所有网络资源
MicroSoft提供了以下几个API:WnetOpenEnum、WnetEnumResource、WNetCloseEnum及一个结构类型NETRESOURCE用于搜索局域网上的网络资源。
其中NETRESOURCE的定义如下:
typedef struct _NETRESOURCE { // nr
DWORD dwScope;
DWORD dwType;
DWORD dwDisplayType;
DWORD dwUsage;
LPTSTR lpLocalName;
LPTSTR lpRemoteName;
LPTSTR lpComment;
LPTSTR lpProvider;
} NETRESOURCE;
我们主要用到是dwType(资源类型:磁盘或打印机)、dwDisplayType(资源类型:服务器,域等)、dwUsage(判断是不是容器c o ntainer)、lpRemoteName(资源名称)。
WnetOpenEnum的作用是打开某一特定的资源容器句柄给WnetEnumResource。WnetEnumResource枚举出指定容器下所有网络资源。
下面是一个列出所有网络资源的的函数示例:
bool __fastcall TForm1::EnumerateFunc(HWND hwnd ,LPNETRESOURCE lpnr,TTreeNode * ParentNode)
{
DWORD dwResult, dwResultEnum;
HANDLE hEnum;
DWORD cbBuffer = 16384; /* 16K is reasonable size */
DWORD cEntries = 0xFFFFFFFF; /* enumerate all possible entries */
LPNETRESOURCE lpnrLocal; /* pointer to enumerated structures */
DWORD i;
dwResult = WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0, /* enumerate all resources */
lpnr, /* NULL first time this function is called */
&hEnum); /* handle to resource */
if (dwResult ==67) //domain下没有可访问的主机
return true;
if (dwResult != NO_ERROR ) { //无
ShowError(dwResult);
return false;
}
TTreeNode * Child;
do {
lpnrLocal = (LPNETRESOURCE) GlobalAlloc(GPTR, cbBuffer);
dwResultEnum = WNetEnumResource(hEnum, /* resource handle */
¢ries, /* defined locally as 0xFFFFFFFF */
lpnrLocal, /* LPNETRESOURCE */
&cbBuffer); /* buffer size */
if (dwResultEnum == NO_ERROR) {
for(i = 0; i < cEntries; i++) {
Child=TreeView1->Items->AddChild(ParentNode,lpnrLocal[i].lpRemoteName);
if(RESOURCEUSAGE_c o nTAINER ==
(lpnrLocal[i].dwUsage & RESOURCEUSAGE_c o nTAINER))
if(!EnumerateFunc(this->Handle, &lpnrLocal[i],Child))
ShowMessage("EnumerateFunc returned FALSE.");
}
}
else if (dwResultEnum != ERROR_NO_MORE_ITEMS) {
ShowError(dwResultEnum);
break;
}
}
while(dwResultEnum != ERROR_NO_MORE_ITEMS);
GlobalFree((HGLOBAL) lpnrLocal);
dwResult = WNetCloseEnum(hEnum);
if(dwResult != NO_ERROR) {
ShowError(dwResult);
return FALSE;
}
return true;
}
需要说明在win98下,此方法列出的资源和网络邻居列出的是一样,和网络邻居一样,有时列出的数据并不准确,可能会有一些域或机器不能找到。
resound
2003-05-12
打赏
举报
回复
在SDK中就有啊
WNetOpenEnum (RESOURCE_GLOBALNET,RESOURCETYPE_DISK,0,pNetResource,&hEnum);
WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
一步一步地调用上面的枚举函数可依次找到网络邻居的主机名,
再根据主机名用gethostbyname(..)得到其IP.
C++ | Qt 获取
局域网
中存在的
主机
(
IP
以及
主机
名
)
本文介绍了一种通过QHostInfo::lookupHost获取
局域网
内设备名称的方法,并演示了一个使用Qt编写的程序,该程序可以扫描192.1.101.0/24网段的所有
IP
,
查找
并显示其对应的
主机
名
。
如何使用
主机
名
在 CMD 中
查找
IP
地址?
在网络中记住众多
IP
地址较难,可使用
主机
名
连接电脑。本教程介绍在 Windows 命令提示符或 PowerShell 中,将
主机
名
或域名转换为对应
IP
地址的方法,包括打开命令提示符、使用 Ping 和 NSLookUp 命令、查看及记录
IP
地址。
windows CMD命令查看
局域网
内所有
主机
名
及
IP
本文介绍了一个Windows CMD命令脚本,用于查询
局域网
内的在线计算机
IP
地址和
主机
名
。通过nbtstat、netview和ping命令组合使用,能够获取本机
IP
地址并进一步扫描同一网段内的其他在线设备。
局域网
跨网段根据
主机
名
找
IP
本文介绍如何在
局域网
跨网段环境下,通过
主机
名
快速查询对应计算机的
IP
地址。当前方法是遍历所有
IP
,效率较低,寻求更优解决方案。
用
IP
地址反查
主机
名
本文介绍了如何通过nbtstat命令获取机器的
主机
名
及其详细网络信息,包括
IP
地址、所属工作组和MAC地址,提供了一种在
局域网
内快速定位和管理设备的方法。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章