局域网里如何通过程序辨认某台计算机属于哪一个组

JediMouse 2001-02-09 12:09:00
要求使用VC实现。
这些计算机的IP地址掩码都是一样的。知道计算机名或知道IP地址甚至知道掩码,如何知道它是属于哪一个组的。或者知道组名,如何知道那些计算机属于这个组?
好象Winpop可以给一个组发送消息,不知道怎么实现的。
...全文
277 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jujus 2001-02-13
  • 打赏
  • 举报
回复
嘿嘿,又有错Bufsize=sizeof(NetR)
Jujus 2001-02-13
  • 打赏
  • 举报
回复
比如:windows98下
NETRESOURCE NetR[128];
NetR[0].dwScope=RESOURCE_GLOBALNET;//所有网络上的资源
NetR[0].dwType =RESOURCETYPE_ANY;//所有资源
NetR[0].dwDisplayType=RESOURCEDISPLAYTYPE_DOMAIN;
NetR[0].dwUsage=RESOURCEUSAGE_CONNECTABLE;//所有可连接的资源
NetR[0].lpLocalName=NULL;
NetR[0].lpRemoteName=NULL;
NetR[0].lpComment=NULL;
NetR[0].lpProvider=NULL;
LPHANDLE hEnum;
WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONNECTABLE,NetR,hEnum);
DWORD EnumCount=128,Bufsize=sizeof(Netr);
WNetEnumResource(hEnum,&EnumCount,NetR,&Bufsize);
WNetCloseEnum(hEnum);
此时NetR中的lpRemoteName就是工作组名。在NT下是Microsoft……。2000没用过。
我不是C程序员,不知道上面写的对不对。
我感觉这几个函数其实就是在资源管理器整个网络中指定一个根节点,然后枚举它的字节点,呵呵~~~~~~~~~~ :)
Jujus 2001-02-13
  • 打赏
  • 举报
回复
其实你可以在初始化的时候就获取局域网内所有资源
你要是在的话跟我用QQ联系,呵呵~~~~我也是前一段时间刚实现的
jiangzhizar 2001-02-13
  • 打赏
  • 举报
回复
我被丙伤!!

愿洗眼恭看!

JediMouse 2001-02-13
  • 打赏
  • 举报
回复
up again
JediMouse 2001-02-10
  • 打赏
  • 举报
回复
Up
Jujus 2001-02-09
  • 打赏
  • 举报
回复
我看了看Winpopup的功能(呵呵~~~~以前没用过),我想它给一个组发信息是这样做的,由你给定的工作组用WNetEnumSource来枚举该组下所有的计算机,然后用GetHostByName获得IP或是这也指定Socket的HostName,然后再用Soctet来发消息。我想是这样的。:)
Jujus 2001-02-09
  • 打赏
  • 举报
回复
我看了看Winpopup的功能(呵呵~~~~以前没用过),我想它给一个组发信息是这样做的,由你给定的工作组用WNetEnumSource来枚举该组下所有的计算机,然后用GetHostByName获得IP或是这也指定Socket的HostName,然后再用Soctet来发消息。我想是这样的。:)
随风bj 2001-02-09
  • 打赏
  • 举报
回复
知道计算机名可以用:gethostname
ip用:int GetSelfIp(CString strIp[])
{
int nCount = 0;
WORD wversionrequested;
WSADATA wsadata;
char name[255];
wversionrequested = MAKEWORD( 2, 0 );
//调用WinSock2功能之前必须调用WSAStartup
if ( WSAStartup( wversionrequested, &wsadata ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
PHOSTENT hostinfo;
hostinfo = gethostbyname(name);
for(int i = 0; hostinfo!= NULL && hostinfo->h_addr_list[i] != NULL; i++ )
{
strIp[i] = inet_ntoa (*(struct in_addr *)hostinfo->h_addr_list[i]);
nCount++;
}
}
WSACleanup( );
}
return nCount;
}
要知道所在的组,我是用NETBIOS编程实现的
具体实现可以在MSDN上查到
JediMouse 2001-02-09
  • 打赏
  • 举报
回复
请教 jujus:
使用WNetEnumSource前应该使用WNetOpenSource来获取hEnum,这时
typedef struct _NETRESOURCE { // nr
DWORD dwScope;
DWORD dwType;
DWORD dwDisplayType;
DWORD dwUsage;
LPTSTR lpLocalName;
LPTSTR lpRemoteName;
LPTSTR lpComment;
LPTSTR lpProvider;
} NETRESOURCE
该怎么样填写才能指定我想要的组
JediMouse 2001-02-09
  • 打赏
  • 举报
回复
请教 jujus:
使用WNetEnumSource前应该使用WNetOpenSource来获取hEnum,这时
typedef struct _NETRESOURCE { // nr
DWORD dwScope;
DWORD dwType;
DWORD dwDisplayType;
DWORD dwUsage;
LPTSTR lpLocalName;
LPTSTR lpRemoteName;
LPTSTR lpComment;
LPTSTR lpProvider;
} NETRESOURCE
该怎么样填写才能指定我想要的组
JediMouse 2001-02-09
  • 打赏
  • 举报
回复
一定要用 NETBIOS吗?
没有其他办法获得组名吗?

Jujus 2001-02-09
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/Topic/66981.shtm
Jujus 2001-02-09
  • 打赏
  • 举报
回复
Sorry!'这也'非'这也',乃'直接'也,键盘误,呵呵~~~~~~~

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧