社区
网络编程
帖子详情
用Winpcap如何获取网卡的MAC和IP?
ansili
2007-07-31 01:38:09
用Winpcap如何获取网卡的MAC和IP?
...全文
1663
5
打赏
收藏
用Winpcap如何获取网卡的MAC和IP?
用Winpcap如何获取网卡的MAC和IP?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
greatws
2008-03-05
打赏
举报
回复
我个人觉得winpcap这块不是很稳定,我比较喜欢用IP Help API获得
http://topic.csdn.net/u/20080215/15/b24bf5e3-1d59-4597-ad8f-511926531a1c.html
qhdzqx
2008-03-05
打赏
举报
回复
//获取网卡参数程序,前提是要安装winpcap及将头文件与lib文件复制到相关文件夹下
#include "pcap.h"
#pragma comment(lib, "wpcap.lib")
main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int i=0;
char errbuf[PCAP_ERRBUF_SIZE];
/* 这个API用来获得网卡 的列表 */
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}
/* 显示列表的响应字段的内容 */
for(d=alldevs;d;d=d->next)
{
printf("%d. %s", ++i, d->name);
if (d->description)
printf(" (%s)\n", d->description);
else printf(" (No description available)\n");
}
if(i==0)
{
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return;
}
/* We don’t need any more the device list. Free it */
pcap_freealldevs(alldevs);
}
//获取IP参数程序
#include "pcap.h"
#pragma comment(lib, "wpcap.lib")
void ifprint(pcap_if_t *d);
char *iptos(u_long in);
int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
char errbuf[PCAP_ERRBUF_SIZE+1];
/* 获得设备列表 */
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf);
exit(1);
}
/* 遍历所有元素 */
for(d=alldevs;d;d=d->next)
{
ifprint(d);
}
return 1;
}
/* Print all the available information on the given interface */
void ifprint(pcap_if_t *d)
{
pcap_addr_t *a;
/* 名称 */
printf("%s\n",d->name);
/* 描述 */
if (d->description)
printf("\tDescription: %s\n",d->description);
/* 回环地址 */
printf("\tLoopback: %s\n",(d->flags & PCAP_IF_LOOPBACK)?"yes":"no");
/* IP 地址 */
for(a=d->addresses;a;a=a->next) {
printf("\tAddress Family: #%d\n",a->addr->sa_family);
switch(a->addr->sa_family)
{
case AF_INET:
printf("\tAddress Family Name: AF_INET\n");
if (a->addr)
/* Y- IP 地址 */
printf("\tAddress: %s\n",iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr));
if (a->netmask)
/* Y- 掩码 */
printf("\tNetmask: %s\n",iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr));
if (a->broadaddr)
/* Y- 广播地址 */
printf("\tBroadcast Address: %s\n",iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr));
if (a->dstaddr)
/* Y - 目标地址 */
printf("\tDestination Address: %s\n",iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr));
break;
default:
/* 未知 */
printf("\tAddress Family Name: Unknown\n");
break;
}
}
printf("\n");
}
/* 来自 tcptracert, 把数字IP地址转换为点格式 */
#define IPTOSBUFFERS 12
char *iptos(u_long in)
{
static char output[IPTOSBUFFERS][3*4+3+1];
static short which;
u_char *p;
p = (u_char *)∈
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
return output[which];
}
ReverseEngineering
2007-09-06
打赏
举报
回复
Winpcap的手册当中肯定有介绍的,找找
JamesXing
2007-07-31
打赏
举报
回复
http://blog.csdn.net/JamesXing/archive/2007/07/24/1704952.aspx
ansili
2007-07-31
打赏
举报
回复
用其他方法获取指定网卡的MAC和ip和可以。
一个
Win
pcap
获取
网卡
信息和抓包的小程序
一个
Win
pcap
获取
网卡
信息和抓包的小程序
MFC
获取
网卡
信息的一个例子
MFC
获取
网卡
信息的一个例子,以前做项目的时候随手写的一个测试例子
win
pcap
方式
获取
内网
MAC
地址
win
pcap
方式
获取
内网
MAC
地址,通向局域网广播ARP包来
获取
在线机子的
网卡
MAC
地址。
如何
获取
局域网内设备
IP
地址和
MAC
地址
获取
局域网内设备
IP
地址和
MAC
地址
vc++
获取
取
网卡
MAC
地址的三种方法.z
ip
vc++
获取
取
网卡
MAC
地址的三种方法.z
ip
visual c++取得
网卡
物理地址的三种方法.z
ip
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章