文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 招聘 专题 新闻
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» C/C++ » 获取本机IP地址子网掩码请教       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: 获取本机IP地址子网掩码请教  ( 查看:966  回复:11 )   
 该主题悬赏的20无忧币已被全部领完 
 
lylfqy
新新人类  点击可查看详细



帖子 40
精华 0
无忧币 189
积分 152
阅读权限 20
注册日期 2006-11-10
最后登录 2008-3-4 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-9-26 22:06   标题:获取本机IP地址子网掩码请教
上一帖 |
vc++6.0下,利用GetIpAddrTable()函数获取本机IP地址和子网掩码,总是出错啊,我已经安装了最新的SDK,也将Iphlpapi.h.包含了,链接了 Iphlpapi.lib库,代码如下:
PMIB_IPADDRTABLE pIpAddrTable;
unsigned long dwSize;
pIpAddrTable=(PMIB_IPADDRTABLE)::GlobalAlloc(GPTR,sizeof(MIB_IPADDRTABLE));
        if(::GetIpAddrTable(pIpAddrTable,&dwSize,FALSE)==ERROR_INSUFFICIENT_BUFFER)
        {
                ::GlobalFree(pIpAddrTable);
                pIpAddrTable=(PMIB_IPADDRTABLE)::GlobalAlloc(GPTR,dwSize);
                MessageBox("调用GetIpAddrTable()失败!");
        }
       
        if(::GetIpAddrTable(pIpAddrTable,&dwSize,FALSE)==NO_ERROR)
        {                       
                MessageBox("Address:%ld\",pIpAddrTable->table[0].dwAddr);
        }
在两处调用GetIpAddrTable函数的地方设置断点调试时总是提示:Access violation
请教高手怎么回事?



网络工程师到底该不该去考CCIE认证?
2007-9-26 22:061楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


诚信兄弟   巨蟹座  
帖子 2909
精华 1
无忧币 5244
积分 3856
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-7-19 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2007-9-27 09:17  ,被系统奖励 3 点无忧币
PMIB_IPADDRTABLE pIpAddrTable

应该是声明了一个指向MIB_IPADDRTABLE结构的指针
但是该指针应该还没有申请内存空间

偶帮你找一下实例



用户必读,51CTO积分系统调整通知
2007-9-27 09:172楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


诚信兄弟   巨蟹座  
帖子 2909
精华 1
无忧币 5244
积分 3856
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-7-19 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2007-9-27 09:20  ,被系统奖励 3 点无忧币
偶看错了,应该是你申请内存空间时有问题

试下

pIPAddrTable = (MIB_IPADDRTABLE*) malloc( sizeof( MIB_IPADDRTABLE) );



用户必读,51CTO积分系统调整通知
2007-9-27 09:203楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


诚信兄弟   巨蟹座  
帖子 2909
精华 1
无忧币 5244
积分 3856
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-7-19 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2007-9-27 09:22  ,被系统奖励 3 点无忧币
这是别人的例程:
#include
#include
#include
#include
#pragram comment(lib, "iphlpapi.lib")
#pragram comment(lib, "ws2_32.lib")

int _tmain(int argc, _TCHAR* argv[])
{
PMIB_IPADDRTABLE pIPAddrTable;
DWORD dwSize = 0, dwRetVal;
pIPAddrTable = (MIB_IPADDRTABLE*) malloc( sizeof( MIB_IPADDRTABLE) );
// Make an initial call to GetIpAddrTable to get the
// necessary size into the dwSize variable
if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) {
  GlobalFree( pIPAddrTable );
  pIPAddrTable = (MIB_IPADDRTABLE *) malloc ( dwSize );
}
// Make a second call to GetIpAddrTable to get the
// actual data we want
if ( (dwRetVal = GetIpAddrTable( pIPAddrTable, &dwSize, 0 )) == NO_ERROR ) {
  in_addr ina;
  ina.S_un.S_addr = pIPAddrTable->table[0].dwAddr;
  TCHAR *pIP = inet_ntoa( ina );
  printf("\tAddress: %s\n", pIP);//pIPAddrTable->table[0].dwAddr);
  printf("\tMask:    %ld\n", pIPAddrTable->table[0].dwMask);
  printf("\tIndex:   %ld\n", pIPAddrTable->table[0].dwIndex);
  printf("\tBCast:   %ld\n", pIPAddrTable->table[0].dwBCastAddr);
  printf("\tReasm:   %ld\n", pIPAddrTable->table[0].dwReasmSize);
}
else {
  printf("Call to GetIpAddrTable failed.\n");
}

return 0;
}



用户必读,51CTO积分系统调整通知
2007-9-27 09:224楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


诚信兄弟   巨蟹座  
帖子 2909
精华 1
无忧币 5244
积分 3856
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-7-19 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2007-9-28 15:15 
楼主有没有搞定?



用户必读,51CTO积分系统调整通知
2007-9-28 15:155楼
[ 顶部 ]
 
lylfqy
新新人类  点击可查看详细



帖子 40
精华 0
无忧币 189
积分 152
阅读权限 20
注册日期 2006-11-10
最后登录 2008-3-4 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-9-28 20:11  ,被系统奖励 3 点无忧币
终于搞定了, 该函数的第二个参数应该定义为DWORD,可MSDN上这样定义PULONG pdwSize,至于DWORD和unsigned long 有什么区别,我查了MSDN也没找到,为什么在这不能定义为unsigned long 类型,俺不知道哎。



网络工程师到底该不该去考CCIE认证?
2007-9-28 20:116楼
[ 顶部 ]
 
lylfqy
新新人类  点击可查看详细



帖子 40
精华 0
无忧币 189
积分 152
阅读权限 20
注册日期 2006-11-10
最后登录 2008-3-4 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-9-28 20:34  ,被系统奖励 3 点无忧币
具体不知道ULONG和unsigned long 及DWORD的区别啊,我的MSDN中没有ULONG的定义啊



网络工程师到底该不该去考CCIE认证?
2007-9-28 20:347楼
[ 顶部 ]
 
∠网络探花√
新新人类  点击可查看详细


十二生肖之牛   天蝎座   行业勋章   技术勋章   诚信兄弟  
帖子 67
精华 0
无忧币 211
积分 109
阅读权限 20
注册日期 2006-11-16
最后登录 2008-2-28 离线

[查看资料]  [发短消息]  [Blog
[个人主页]    QQ       
发表于:2007-9-29 17:00  ,被系统奖励 3 点无忧币
o(∩_∩)o...,这个还挺有用的~!
赞一个先!!



网络工程师到底该不该去考CCIE认证?
2007-9-29 17:008楼
[ 顶部 ]
 
skycdut
新新人类  点击可查看详细



帖子 6
精华 0
无忧币 1
积分 6
阅读权限 20
注册日期 2007-10-1
最后登录 2007-10-13 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-10-7 07:44 
有问题啊



网络工程师到底该不该去考CCIE认证?
2007-10-7 07:449楼
[ 顶部 ]
 
logo0775
新新人类  点击可查看详细


十二生肖之鼠   白羊座   行业勋章   技术勋章   诚信兄弟  
帖子 4
精华 0
无忧币 32
积分 0
阅读权限 20
注册日期 2007-5-30
最后登录 2008-4-16 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-10-7 10:58  ,被系统奖励 3 点无忧币
我有...在附件.绝对可用....
IPHLPAPI.h放在VC下面的头文件路径中...
\VC98\INCLUDE\Iphlpapi.h

附件(查看下载说明): Iphlpapi.rar (2007-10-7 10:58,大小:2.77 K)
该附件被下载 11 次     您下载该主题帖内所有附件同时将被扣掉2点无忧币  查看分数政策说明


附件(查看下载说明): LocalHostInfo.rar (2007-10-7 10:58,大小:13.19 K)
该附件被下载 13 次     您下载该主题帖内所有附件同时将被扣掉2点无忧币  查看分数政策说明




【每日必读】头条新闻大扫荡
2007-10-7 10:5810楼
[ 顶部 ]
 
yulin777
新新人类  点击可查看详细



帖子 1
精华 0
无忧币 9
积分 1
阅读权限 20
注册日期 2008-4-21
最后登录 2008-4-21 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-4-21 00:22 
9楼的兄弟,这个附件却个文件
d:\89075\include\localhostinfo\iphlpapi.h(34) : fatal error C1083: Cannot open include file: 'ipexport.h': No such file or directory



网络工程师到底该不该去考CCIE认证?
2008-4-21 00:2211楼
[ 顶部 ]
 
oulei
新新人类  点击可查看详细



帖子 1
精华 0
无忧币 7
积分 1
阅读权限 20
注册日期 2008-4-1
最后登录 2008-4-27 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-4-27 17:11 
啊,有问题吗



网络工程师到底该不该去考CCIE认证?
2008-4-27 17:1112楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号