首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将UDP数据包从Android应用程序发送到MAC地址?

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

Stack Overflow用户
提问于 2016-05-10 01:45:03
回答 2查看 4.4K关注 0票数 3

是否有方法将UDP数据包发送到网络MAC地址?DatagramSocketDatagramPacket似乎都没有这样做的机制。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-10 17:13:13

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

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

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

Stack Overflow用户

发布于 2016-05-10 01:59:58

简短的回答是否定的。网络堆栈是为硬件地址在操作系统的媒体层中可寻址而设置的,它只有一个与向应用程序公开的传输层的定义接口。您需要访问低级别的操作系统。看起来,您正试图在Java中进行此调用,而且您很难做到这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37128003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档