network-programming - 如何从 Android 应用程序将 UDP 数据包发送到 MAC 地址?

标签 network-programming android-networking

有没有办法将 UDP 数据包发送到网络 MAC 地址? 都不是DatagramSocket也不DatagramPacket似乎有一种机制可以做到这一点。

最佳答案

由于分层的网络堆栈,第一 react 是您不能向 MAC 地址发送 UDP 消息。我的陈述意味着您无法在 UDP 数据报字段中设置 MAC 地址。您可以将 UDP 数据报发送到 IP 地址和端口。该 IP 地址可以是单播、多播或广播。

如果您打算将 UDP 数据报发送到特定的 MAC 地址,则需要实现更复杂的解决方案(DHCP 是更复杂解决方案的一个示例)。您可以应用不同的策略:

  • 如果您只需要向 MAC 地址发送数据报,而没有从该 NIC 收到任何数据报,并且知道该 MAC 地址,则首先您需要向该 MAC 地址发送第 2 层帧(第 2 层协议(protocol)允许您设置 MAC 地址)。您可以实现一个协议(protocol)来监听该 MAC 地址帧,并能够发回响应,为您提供相应的 IP 地址。 RARP 是一种协议(protocol),可让您在给定 MAC 地址的情况下获得 IP
  • 您可以实现使用多播组的协议(protocol)。从您的 PC 发送一个多播消息,其中包含您的目标 MAC 地址。订阅该多播组的所有节点(节点中的应用程序)都会收到该消息。具有目标 MAC 地址的设备可以响应。一旦它响应,您就有了它的 IP 地址并可以发送单播 UDP 数据报。

关于network-programming - 如何从 Android 应用程序将 UDP 数据包发送到 MAC 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37128003/

相关文章:

c - TCP 死链检测

java - 像api调用这样的网络相关任务应该放在Activity生命周期的什么位置?

java - 具有多个 Activity 网络的 Android NetworkInfo 状态

java - http获取android异步任务

java - 这是什么意思 "couldn' t read CGI input from STDIN after alloc read 0 "

ios - 通过异步调用自动重新登录

android - 如何监控 Android 设备中应用程序的后台服务?

linux - 如何通过UDP管理多个客户端和值类服务器之间的中间桥接服务器的 session ?

java - 我如何知道服务器使用 Java 提供的默认密码套件