社区
网络编程
帖子详情
高分求救!~!~如何编程实现查找局域网内其它主机的IP和主机名????
cxn0808
2003-05-11 11:28:36
吾正在用VC编写一点对点聊天程序,连接时要求输入对方IP,现在我要通过函数调用实现局域网内的其它主机的IP和主机名,但苦于实在找不到相应的函数,希望名位高手能帮小弟一把!~!~!谢谢先了!~!~!
...全文
147
2
打赏
收藏
高分求救!~!~如何编程实现查找局域网内其它主机的IP和主机名????
吾正在用VC编写一点对点聊天程序,连接时要求输入对方IP,现在我要通过函数调用实现局域网内的其它主机的IP和主机名,但苦于实在找不到相应的函数,希望名位高手能帮小弟一把!~!~!谢谢先了!~!~!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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.
基础
各位兄弟,在SDK
编程
中如果
实现
窗口分割呢?请问怎么得到一个函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画一个箭头?
高分
请教如何限制程序运行的方法?求助:通过
编程
DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个问题.如何对 I/O 端口进行操作?有了该问题就有了思考(100分 献礼!)如何
数据库帖子收集
这样的数据列表在存储过程中应该怎么样选择得到? 请问造成SQL2000服务不能启动的原因有哪些? sql server中有無類似于if 的函數,即像這樣select if(cancel=1,'cancel','') from sales 这样怎么返回呀!!!!记录集的返回。。 谁能跟我说说期初库存怎么样的一个业务逻辑!都要处理哪些内容!需要每月进...
WEB开发文档2 总结
http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx 怎样将后台生成的在内存中的图象显示到客户端 Microsoft IE WebControls下载地址 如何在DATAGRID中使用JAVASCR
IP
T脚本控制 DataGrid中连接到下一页显示数据 下载中文名
MS-SQL Server 基础类 - SQL语句
乡镇雪亮工程整体解决方案
平安乡镇雪亮工程建设方案目 录第一章 项目建设规划1.1 建设目标1.1.1 面向雪亮工程景点1.1.2 面向旅游者1.1.3 面向雪亮工程商家1.1.4 面向雪亮工程管理机构(旅游局)1.2 建设规模和内容1.2.1 规划建设的系统及功能1.2.2 雪亮工程综合管理平台1.3 系统建设总结与建议第二章 总体设计规划2.1 总体设计原则2.2 总体目标2.3 总体建设任务分析2.3.1 总体建设任务2.3.2 七大基础平台建设内容2.3.3 六大应用体系建设内容2.4 系统总体结构和逻辑结构2.4.1
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章