- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个用 C++ 编写的发现程序,该程序将在 Linux 上运行,使我能够确定某些设备是否连接到网络。我有其他设备的 Mac 地址,我需要解析它们的 IP 地址。
我检查了/proc/net/arp 并且设备没有出现。我尝试 ping 广播地址,但未到达目标,因此 ARP 缓存未更新。但是,如果我直接 ping ip 地址,它就是(但这不是一个选项)。
此外,设备可以配置静态 IP,也可以通过 dhcp 获取它们。
有什么方法可以确定给定 Mac 地址的 IP 地址吗?
最佳答案
几年前我曾建议使用 RARP,但 Linux 内核不再支持它。除非已经有解决方案,否则我建议您使用以下自制解决方案:
-您可以使用数据包套接字来实现您自己的第 2 层协议(protocol):您可以选择自己的协议(protocol)代码,而不是使用 IP 作为以太网帧的有效负载(例如:对于 IP,请使用 0xABAB,而不是 0x0800,始终大于 1536)
-在每个节点中,您实现一个简单的服务器,该服务器使用数据包套接字来读取具有该协议(protocol)代码的帧,或者您可以根据需要使用 pcap。
- 每当您需要另一个节点的 IP 地址时,您都会向该 MAC 地址发送以太网帧。服务器将读取新帧并用另一个传送其自己的 IP 地址的帧进行响应。
-如果您选择此解决方案,请记住有效负载必须至少为 46 字节长,因此您可能需要使用填充。您还可以将 TLV(类型长度值)格式用于您自己的协议(protocol)。
阅读此内容:
http://en.wikipedia.org/wiki/Ethernet_frame
http://man7.org/linux/man-pages/man7/packet.7.html
我希望这会有所帮助。
关于c++ - 以编程方式使用 Mac 地址解析 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24677452/
我必须像谷歌一样解析印度地址,我需要一些如何解析地址的示例。有没有地址解析的例子。是否有任何关于印度城市、地方、州、个人密码等的免费词典可用 例如 5/802,vedvihar society,nea
我有一些地址数据需要解析。除楼层数据外,大多数地址信息都以适合我的方式提供。 对于以不同方式获取的楼层数据,我可能会得到以下格式: “大街 123 号 2 楼”或“大街 123 号 2 楼” 如果我使
我正在尝试在数据框中创建一个新列,该列将从字符串中解析出地址。尝试执行此操作时,我收到以下错误: ("'Series' objects are mutable, thus they cannot be
我正在使用 IPAddress.TryParse() 来解析 IP 地址。但是,它有点过于宽松(解析“1”返回 0.0.0.1)。我想将输入限制为点分八位字节表示法。执行此操作的最佳方法是什么? (注
有没有办法确定 IP 地址是否解析为特定云提供商(AWS、Azure、GCP、Digital Ocean)?像这样的事情: # Returns 'Azure' whichCloud('256.256.
我正在使用 bonjour(带有 java)来尝试获取网络上设备的 IP 地址。我看过这个问题:Get Device IP with Bonjour并使用 InetAdress getByName 方
我想禁用 ipv6 解析。 当我对主机名进行 nslookup 时,它给出了 2 个 IP 地址,我想永久禁用 ipv6 地址。我正在使用 im6q sabrelite board yocto 构建。
我正在编写一个用 C++ 编写的发现程序,该程序将在 Linux 上运行,使我能够确定某些设备是否连接到网络。我有其他设备的 Mac 地址,我需要解析它们的 IP 地址。 我检查了/proc/net/
我试图使用 sprintf() 来解析 IP 地址。 buf 存储从其他主机接收到的数据包。而buf中的测试数据为'\0xff'。我希望在 ip 中看到 255.255.255.255。但是我得到的是
如何从 IPv4 映射的 IPv6 地址获取 IPv4 地址? 例如,我有一个 IP 地址 ::FFFF:129.144.52.38。从中,我需要提取 129.144.52.38。是否有任何用于此目的
我是一名优秀的程序员,十分优秀!