社区
网络及通讯开发
帖子详情
如何在局域网内获取已知IP地址的计算机对应的网卡mac地址?
98ly
2006-09-27 05:33:44
如何在局域网内获取已知IP地址的计算机对应的网卡mac地址?用程序实现。
...全文
867
8
打赏
收藏
如何在局域网内获取已知IP地址的计算机对应的网卡mac地址?
如何在局域网内获取已知IP地址的计算机对应的网卡mac地址?用程序实现。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
i_love_pc
2006-09-29
打赏
举报
回复
原来MAC也能改,学习了,谢谢!
i_love_pc
2006-09-29
打赏
举报
回复
重装系统后,得到的MAC会变的???
=============================
听说MAC是不会变的
lbg
2006-09-29
打赏
举报
回复
如果得到本机的MAC怎么做?用Y___Y(一叶障目)的方法好象不行,因为重装系统后,得到的MAC会变的,很奇怪
lbg
2006-09-29
打赏
举报
回复
是会变的 ,因为我用MAC地址加密用户密码的,每次用户重装系统后,我必须更改我的数据库中的MAC地址记录,我碰到过很多此了,安装诺顿后也会出现这种情况
do2008
2006-09-27
打赏
举报
回复
就用SendArp,顶
98ly
2006-09-27
打赏
举报
回复
谢谢keiy,你的回答很正确。结贴了。
柯本
2006-09-27
打赏
举报
回复
LZ要行到的是网内IP的MAC,非本机的,可用iphlpapi.dll中的SendARP
#include <winsock.h>
...
typedef int _stdcall (*TSendARP)( int DestIP, int SrcIP, byte pMacAddr[], int &PhyAddrLen );
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSendARP SendARP;
HWND h=LoadLibrary("iphlpapi.dll");
if (h==NULL)
{
ShowMessage("Error!,Can't find iphlpapi.dll");
return;
}
SendARP=(TSendARP)GetProcAddress(h,"SendARP");
if (SendARP==NULL)
{
ShowMessage("Error!Can't find SendARP");
return;
}
int dip=inet_addr("192.168.0.13");
byte mac[6];
memset(mac,0,6);
int l=6;
int r=SendARP(dip,0,mac,l);
if(r!=NO_ERROR)
{
ShowMessage("SendARP Error! ");
return;
}
String x;
x.printf("%02x-%02x-%02x-%02x-%02x-%02x",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
ShowMessage(x);
}
Y___Y
2006-09-27
打赏
举报
回复
这个是获得网络配置信息的程序
u_char g_ucLocalMac[6]; // 本地MAC地址
DWORD g_dwGatewayIP; // 网关IP地址
DWORD g_dwLocalIP; // 本地IP地址
DWORD g_dwMask; // 子网掩码
BOOL GetGlobalData()
{
PIP_ADAPTER_INFO pAdapterInfo = NULL;
ULONG ulLen = 0;
// 为适配器结构申请内存
::GetAdaptersInfo(pAdapterInfo,&ulLen);
pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR, ulLen);
// 取得本地适配器结构信息
if(::GetAdaptersInfo(pAdapterInfo,&ulLen) == ERROR_SUCCESS)
{
if(pAdapterInfo != NULL)
{
memcpy(g_ucLocalMac, pAdapterInfo->Address, 6);
g_dwGatewayIP = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String);
g_dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String);
g_dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String);
}
}
printf(" \n -------------------- 本地主机信息 -----------------------\n\n");
in_addr in;
in.S_un.S_addr = g_dwLocalIP;
printf(" IP Address : %s \n", ::inet_ntoa(in));
in.S_un.S_addr = g_dwMask;
printf(" Subnet Mask : %s \n", ::inet_ntoa(in));
in.S_un.S_addr = g_dwGatewayIP;
printf(" Default Gateway : %s \n", ::inet_ntoa(in));
u_char *p = g_ucLocalMac;
printf(" MAC Address : %02X-%02X-%02X-%02X-%02X-%02X \n", p[0], p[1], p[2], p[3], p[4], p[5]);
printf(" \n \n ");
return TRUE;
}
有了 IP 地址,为什么还要用 MAC 地址?
我认为,
IP地址
和
MAC地址
可以类比生活中寄快递的过程。 在整个网络中数据被封装成数据报文进行发送,就像我们生活中寄快递时将物品放进包裹中。而数据在路由器之间的跳转也可以看作是不同地区快递小哥对物流的交接。
IP地址
ip地址
等价于快递包裹上的收件人地址。 快递员通过收件人地址将包裹在出发地到目的地之间连出一条线,然后通过不同地区之间的物流中转最后将包裹送到收件人的手中。 从上图的粗箭头所描述的路径便可达到目的地址,陕西省-西安市-xx县-xx街道-…。 同理,
ip地址
也具备此功能,通过
IP地址
的网络位
为什么有了
MAC地址
还要有
IP地址
(简单易懂)
一、基础知识普及 我们在进行通信的的时候,需要知道对方的地址和身份,才能将信息准确传递,如同寄快递一般。 1.
IP地址
(包裹地址): 百度解释:
IP地址
是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。
IP地址
是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理...
计算机
网络:
ip地址
和
mac地址
有什么区别
mac地址
和
ip地址
的不同有如下几个方面: 1、名称上的区别
IP地址
是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。
MAC地址
(英语:Media Access Control Address),直译为媒体访问控制地址,也称为
局域网
地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网上设备位置的地址。 2、分配地址不同
MAC地址
用于
IP地址
与
Mac地址
的关系与区别 - 学习/实践
主要用于学习
IP地址
与
Mac地址
的关系与区别,更加了解掌握
计算机
网络相关知识。 1.文档阅读 网络协议概论 | Laravel 学院 - IP 协议(七): IP 地址与 MAC 地址是如何映射的
IP地址
和
MAC地址
的区别和联系是什么? - 知乎 2.整理输出 TBD 后续补充 ... 3.问题/补充 TBD .
MAC地址
和
IP地址
的区别
基础知识 标识网络中的一台
计算机
,一般至少有三种方法,最常用的是域名地址、
IP地址
和
MAC地址
,分别
对应
应用层、网络层、物理层。网络管理一般就是在网络层针对
IP地址
进行管理,但由于一台
计算机
的
IP地址
可以由用户自行设定,管理起来相对困难,
MAC地址
一般不可更改,所以把
IP地址
同
MAC地址
组合到一起管理就成为常见的管理方式。 一. 什么是
MAC地址
MAC地址
就是在媒体接入层上使用的地址,也叫...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章