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

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



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

[查看资料]  [发短消息]  [Blog
       
发表于:2007-9-26 22:09   标题:怎样获取本机IP地址 子网掩码 MAC地址
上一帖 |
用Windows API,怎样获取本机IP地址、子网掩码、MAC地址啊?在我的机器上用注册表获得的IP地址,子网掩码都不正确啊,只获得了网络适配器的名称,望高手指点!



51cto三周年庆典 社区系列活动(购物卡、无忧币大派送!)
2007-9-26 22:091楼
[ 顶部 ]
 
hagejid
副版主  点击可查看详细


十二生肖之猴   金牛座   行业勋章   技术勋章   诚信兄弟  
帖子 398
精华 0
无忧币 1992
积分 485
阅读权限 140
注册日期 2007-4-3
最后登录 2008-8-21 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-9-27 07:28  该回复被 lylfqy 奖励 20 点无忧币
此回复于2007-09-27 09:53被 lylfqy 评为最佳答案

使用 SendARP 查询 MAC 地址
这是我使用过的能用的方法
不过我在学校了,所以我做的一个源程序没能放上来
那些用NETBIOS API 的方法在一些没装NETBIOS协议的机器上用不了
其中一些头文件找找就行了
希望你不是做流氓软件的统计功能,呵呵

通过 IP Helper   API 中的 SendARP 发送 ARP 请求来获取 MAC 地址,简单方便,缺点是不能跨越网关。

#include
#include
#include
#pragma comment(lib , "IpHlpApi.lib")
#pragma comment(lib , "WS2_32.lib")
int main(int argc,char * argv[])
{
    int iReturn;
   DWORD dwIP;
   BYTE byMAC[6];
   DWORD dwLen;
   WSADATA WsaData;
   WSAStartup(MAKEWORD(2, 0), &WsaData);
     __try  
     {
         printf("IP2MAC Ver 1.0 -- Get MAC address from IP address though ARP request.\n\n");
     if (argc != 2)
     {
        printf("Usage: %s \n", argv[0]);
       __leave;
      }
     dwIP = inet_addr(argv[1]);
     if (dwIP == INADDR_NONE)
     {
        printf("Invalid IP address: %s.\n", argv[1]);
       __leave;
      }
     // 发送ARP查询包获得 MAC 地址
       dwLen = 6;
     iReturn = SendARP(dwIP, 0, (PULONG) &byMAC, &dwLen);
     if (iReturn != NO_ERROR)
     {
        printf("Error: Send ARP request. \nBe sure that connectting to %s need no gateway.\n", argv[1]);
       __leave;
      }
     printf("%.2X-%.2X-%.2X-%.2X-%.2X-%.2X\n",
        byMAC[0],
   byMAC[1],
   byMAC[2],
   byMAC[3],
   byMAC[4],
   byMAC[5]);
      }
      __finally
      {
         WSACleanup();
       }
   return 0;
}

来源:http://hi.baidu.com/hentor/blog/item/487aad1863897b0634fa4166.html



C到底该不该学,看看这个就明白
2007-9-27 07:282楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


开坛元老   内阁大臣   诚信兄弟   主版主专用   巨蟹座  
帖子 3027
精华 1
无忧币 5559
积分 4050
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-8-21 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2007-9-27 09:23 
楼上正解



用户必读,51CTO积分系统调整通知
2007-9-27 09:233楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

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