如何在C++中发送 ARP 请求
How to send ARP requests in C++
我是Mac编程的新手。我希望始终确保我的程序管理的所有网络接口在 ARP 缓存中具有 GW 的 MAC 地址。为此,如果我检测到 GW 的 MAC 地址丢失,我想以编程方式向 GW 发送 ARP 请求。
Mac OS X 似乎不支持 AF_PACKET/PF_PACKET 地址系列和协议上的原始套接字。在C++有没有另一种方法可以做到这一点?例如,是否有可用于发送 ARP 请求的 API?
如果您需要确保每个主机都有与默认网关关联的正确 ARP 条目,则可以设置静态 ARP 条目。静态 ARP 条目将永久保留在 ARP 表中,因此您无需定期发送 ARP 请求。
arp -s "IP_GW" "MAC_GW" -i "DEVICE YOU WANT TO SET, E.G: en0"
无论如何,您可以使用C库"libnet"(也适用于Windows和Linux)发送ARP请求。这是一个较低级别的库,您需要在字节级别处理数据包及其标头。要创建 ARP 请求,您必须使用:
libnet_autobuild_arp()
libnet_autobuild_ethernet()
在这里你可以找到一个libnet教程。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 如何在boost beast http请求中设置http头
- 发送一个带有libcurl C++问题的帖子请求:s
- 在多个核心中处理一个HTTP请求
- 错误:请求非类类型为"MULTIMEDIA_FILME [500]"的成员|
- 使用 Winsock2.h C++向不和谐 API 发送 HTTP 请求时出现问题
- 每个服务器请求的内存预算
- std::getline没有在while循环中重新请求用户输入
- 请求最简单的 OpenMP 目标 GPU 示例
- 请求有关C++中嵌入 for 循环的帮助
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 使用 winsock 接收 http 请求
- QNetworkAccessManager 稍后在添加请求时删除
- 为什么我收到来自谷歌的错误请求?
- 从网链套接字请求连接设备的列表
- libcurl :C++处理多个异步请求
- 对于 http 请求,python 比 c++ 快吗?
- 通过引用传递向量是请求 std::分配器
- 如何在C++中发送 ARP 请求
- 原始套接字未拾取 ARP 请求