宽频中,一台主机连几台分机的情况下,怎样获取分机的IP

Richuen22 2002-06-30 06:01:26
用gethostbyname函数获得的不是分机的真实IP,怎样才能取得其中一台分机的真实IP地址呢?
...全文
140 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Richuen22 2002-07-02
  • 打赏
  • 举报
回复
To thb(thb)
不行!去到 if ( NetResource->lpRemoteName )时总是NetResource->lpRemoteName 为假。不过也可能需要Windows Networking编程才行的,谢谢提示。
thb 2002-07-02
  • 打赏
  • 举报
回复
获取网络中所有地主机名及IP地址:
CString strTemp,str;
struct hostent *host;
struct in_addr *ptr; // 获取IP地址的结构
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;
DWORD dwRn=WNetOpenEnum( RESOURCE_CONTEXT, NULL, NULL, NULL, &hEnum );
if ((dwRn == NO_ERROR)&&(hEnum))
{
DWORD Count = 0xFFFFFFFF;
DWORD BufferSize = 2048;
LPVOID Buffer = new char[2048];
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];
// 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);//
str+=strTemp;
str+="\n";
}
}
}
AfxMessageBox(str);
delete Buffer;
WNetCloseEnum( hEnum );
}
renren6250 2002-07-02
  • 打赏
  • 举报
回复
gz
xuying 2002-07-01
  • 打赏
  • 举报
回复
试试snmp吧。不过也很麻烦的。
Richuen22 2002-07-01
  • 打赏
  • 举报
回复
呵哈哈,看来要加注了,再加100,晒朗!
Richuen22 2002-07-01
  • 打赏
  • 举报
回复
To harry202(harry)
这个要等一天才能回答你,因情况是别人的机。
To All
若两台机都是这种情况,就不能用间接方法获得了。情况就如网吧,宽频,一台主机连上几十台机子,我现在就是要得到其中一台机子的真实IP。
mfkzj 2002-07-01
  • 打赏
  • 举报
回复
这个好像有点难度 不过gethostbyname应该能得到真的
harry202 2002-06-30
  • 打赏
  • 举报
回复
gethostbyname()得到的是一个数组,你每个返回的ip都看过了吗?确定没一个对的?
Richuen22 2002-06-30
  • 打赏
  • 举报
回复
To xbkong(xiaobin)
得到的不是真的IP地址。
xbkong 2002-06-30
  • 打赏
  • 举报
回复
你的目的是什么。你是在什么地方调用gethostbyname(),分机?应该
得到IP地址啊,难道得到的是别是什么东东?
Richuen22 2002-06-30
  • 打赏
  • 举报
回复
To xbkong(xiaobin)
你的方法应可以的,因我试过这样可以把信息发来发去的。不过我想用一种直接的方法获得Ip地址。不过也谢谢你的回复。
xbkong 2002-06-30
  • 打赏
  • 举报
回复
你可以在主机处开一个listensocket, 客户机去连,连接上后通过取socket中
的对端地址来实现目的。

16,472

社区成员

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

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

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