c - 通过网络发送的 MAC 地址格式

标签 c network-programming mac-address libpcap

给定一个标准 Mac 地址“xx:xx:xx:xx:xx:xx”,它需要采用什么格式才能使用 libpcap 的数据包注入(inject)进行发送?

我将其加载到以太网框架中,其中 srcMac 只是一个字符:

memcpy(&ethernet.ether_src, srcMac, sizeof(ethernet.ether_src));

但是在wireshark中地址不正确。 wireshark 中可见的 Mac 地址会根据字符串的内容而变化,因此它不会被默认地址或任何内容覆盖。

最佳答案

我想,在您的代码中 ethernet.ether_src 具有 struct ether_addr 类型,因此它不仅仅是一个 char* 字符串。

因此您需要将 ASCII 字符串转换为以太网地址,例如函数声明为

extern struct ether_addr *ether_aton (__const char *__asc) __THROW;

关于c - 通过网络发送的 MAC 地址格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340557/

相关文章:

java - 从任意大小的位数组中获取 15 位 CRC

c++ - 是否有任何具有非 IEEE C/C++ 浮点格式的现代平台?

android - 完善除IMEI、Android_ID、WLAN Mac和蓝牙地址外设备的unique_id

java - 将 MAC 地址字节数组格式化为字符串

带有未声明变量的逗号运算符 - 为什么它可以编译?

c - 什么是 CHAR_BIT?

c - 从 C 中的字符串数组中删除重复项

java - 如何确定传入连接来自本地计算机

sockets - 在UDP套接字上使用sendto()/recvfrom()而不是connect()/send()/recv()的目的是什么?

java - 查找手机中打开的UDID和mac地址