计网_C语言编程获取本机的mac地址以及mac下pcap编程报错Undefined symbols for architecture x86_64-"_pcap_*****"...的解决办法

本文介绍了如何使用C语言和libpcap库来捕获数据包获取本机MAC地址,以及在Mac上遇到编译错误"Undefined symbols for architecture x86_64"的解决方法。通过模拟ARP响应并捕获ICMP包来实现,同时提供了解决缺少动态链接pcap库导致的编译问题。
摘要由CSDN通过智能技术生成

本文包含以下两部分:

  • ## C语言编程获取本机的mac地址
  • ## mac下pcap编程报错Undefined symbols for architecture x86_64:”__pcap_*****”, referenced from: _main in…的解决方法

关键词:计算机网络; pcap; libpcap; mac; mac地址;

本学期计网lab老师要求我实现用C语言获取本机的mac地址。但像我这么懒的人眼珠一转就想直接调shell,但问过了老师,直接调shell的命令不行,也就意味着system(“ipconfig”)这样的代码不允许出现。不让用就算了吧,那就自己搞。当然,老师明确说了不会就问度娘,那我就问问。。。

上网查了一下,网上相关的实现有很多,比如有调用API的、通过访问网卡获取的,等等。但我这么懒,肯定不想访问网卡什么的(其实也挺容易的),那么应该怎么办呢?

受到ping命令的启发,我的想法是通过一次网络连接请求,获取本机mac地址。在构思结束后我上网查相关资料,才发现我的想法对应的是一个叫ARP协议的东西。好高兴自己居然独立想出来了一个高级的东西~(并不,只是你的思路别人已经造好了轮子而已。。)

ARP的C语言实现网络上有:传送门,但这个太长,我感觉很多功能并不需要。

我利用ARP协议获取本机的mac地址的思路是:模拟接收到一个数据包,并且发送数据包回应(此部分类似ping命令),然后捕获我们回应的数据包进行解析,得到本机的mac地址并不是完全基于ARP,更正为抓取ping命令发送的ICMP包

既然是捕获数据包,那就要用到我们”大名鼎鼎“的数据包捕获函数库PCAP了。

要使用PCAP可能你需要在自己的电脑上安装libpcap这个函数库(是叫函数库嘛?问号脸。。。。)

mac我并没有安装libpcap,好像是自带pcap库了?(便利性赞一个)。其他系统要安装可以百度一下

好了废话不多说,直接上代码:

/**************************myMacAddress.c************************************* 
 * Copyright (C) 2017 by guoayng (Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)* 
 * 实现了C语言获取本机的mac地址
 * 备注:
 * 网上相关的实现有很多,比如有调用API的、通过访问网卡获取的,等等。并且问过了老师,直接调shell的命令不行,也就意味着system(“ipconfig”)这样的代码不允许出现
 * 但我不想访问网卡什么的,那么应该怎么办呢?
 * 受到ping命令的启发,我的想法是通过一次网络连接请求,获取本机mac地址
 * 在构思结束后我上网查相关资料,才发现我的想法对应的是一个叫ARP协议的东西
 * ARP的C语言实现网络上有:http://bl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值