Network programming 如何从Android应用程序向MAC地址发送UDP数据包?

Network programming 如何从Android应用程序向MAC地址发送UDP数据包?,network-programming,android-networking,Network Programming,Android Networking,有没有办法将UDP数据包发送到网络MAC地址? 两者似乎都没有这样做的机制。简短的回答是否定的。网络设置为硬件地址在操作系统的媒体层中可寻址,只有一个与应用程序公开的传输层定义的接口。您需要进入低级操作系统。看起来您正试图在Java中进行此调用,并且很可能无法完成此操作 由于分层网络堆栈,第一个响应是无法向MAC地址发送UDP消息。我的声明意味着您没有任何方法在UDP数据报字段中设置MAC地址。您可以向IP地址和端口发送UDP数据报。此IP地址可以是单播、多播或广播 如果您打算将UDP数据报发送

有没有办法将UDP数据包发送到网络MAC地址?
两者似乎都没有这样做的机制。

简短的回答是否定的。网络设置为硬件地址在操作系统的媒体层中可寻址,只有一个与应用程序公开的传输层定义的接口。您需要进入低级操作系统。看起来您正试图在Java中进行此调用,并且很可能无法完成此操作

由于分层网络堆栈,第一个响应是无法向MAC地址发送UDP消息。我的声明意味着您没有任何方法在UDP数据报字段中设置MAC地址。您可以向IP地址和端口发送UDP数据报。此IP地址可以是单播、多播或广播

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

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

他们没有。为什么您认为您需要这个?@EJP据我所知,DHCP客户端有时会在通过将广播标志设置为0来获取IP地址之前请求DHCP服务器的单播响应。DHCP服务器应该向发现消息中传递的MAC地址发送响应。很高兴听到你对此的解释。非常感谢你的解释。我读过关于原始套接字向MAC地址发送UDP数据包的文章。我想用Java for Android是不可能做到的。