有没有办法将UDP数据包发送到网络MAC地址? DatagramSocket和DatagramPacket似乎都没有这样做的机制。如何将UDP数据包发送到Android应用程序的MAC地址?
1
A
回答
1
由于分层网络堆栈,第一个响应是您无法将UDP消息发送到MAC地址。我的声明意味着您没有任何方式在UDP数据报字段中设置MAC地址。您可以将UDP数据报发送到IP地址和端口。该IP地址可以是单播,多播或广播。
如果您打算将UDP数据报发送到特定的MAC地址,则需要实施更复杂的解决方案(DHCP是更复杂解决方案的一个示例)。有不同的策略,你可以申请:
- 如果你只需要发送一个数据包的MAC地址,而无需接受任何数据报从NIC,并且知道MAC地址,你将需要发送的第2层帧到该MAC地址(第2层协议允许您设置MAC地址)。您可以实施侦听该MAC地址帧的协议,并能够向您发送响应,以提供相应的IP地址。 RARP是一种协议,可让您在给定MAC地址的情况下获得IP地址
- 您可以实现使用多播组的协议。从PC发送包含您所定位的MAC地址的多播消息。订阅该组播组的所有节点(节点中的应用程序)都会收到该消息。具有目标MAC地址的那个可以响应。一旦它响应,你就有了它的IP地址并且可以发送一个单播UDP数据报。
+0
非常感谢您的澄清。我已经读过关于将UDP数据包发送到MAC地址的原始套接字。我猜这是不可能用Java for Android来完成的。 – Hong
1
简短的回答是否定的。网络stack被设置为使硬件地址在OS的媒体层中可寻址,仅具有暴露给应用的传输层的定义接口。您需要使用低级别操作系统。看起来你正在尝试在Java中进行这种调用,而且你很难完成这个任务。
相关问题
- 1. Ruby将数据包发送到已知的MAC地址
- 2. 如何将Android应用程序中的地址发送到Google地图
- 3. UDP套接字无法发送数据包到DHCP地址
- 4. 如何将数据从android应用程序发送到asp.net webservices
- 5. 如何在java中获取UDP数据包发送方的本地ip地址
- 6. 如何使用从源地址到目标主机的IP地址发送udp数据包?
- 7. 如何在Mac OS X上读取和发送UDP数据包?
- 8. Android AsyncTask发送UDP数据包
- 9. 从Android平台发送UDP数据包
- 10. 如何为UDP数据包发送者启用自定义IP地址?
- 11. 如何将UDP数据包发送到GPRS模块
- 12. 发送UDP数据包gopacket
- 13. UDP发送数据包failling
- 14. 从Android应用程序发送数据到B应用程序
- 15. 发送UDP数据包,不使用ARP,已知的IP和MAC
- 16. 将数据发送到指定的应用程序的Android
- 17. 从Android应用程序发送Json到本地数据库
- 18. 如何在Android应用程序中使用mac地址
- 19. 如何将数据发送到特定的应用程序?
- 20. Android - 使用onSensorChanged同步线程以发送udp数据包
- 21. 如何使用packet_mmap发送SOCK_DGRAM数据包而不关心MAC地址?
- 22. 如何从网站发送svg数据到android应用程序
- 23. 如何使用nc发送udp数据包到windows 7?
- 24. 获取UDP数据包的IP地址
- 25. MaxMSP将数据发送到Android应用程序
- 26. 将数据从servlet发送到android应用程序
- 27. Facebook Android SDK - 将数据发送到Facebook应用程序
- 28. Android-将数据从应用程序发送到灯服务器
- 29. 发送数据从iphone应用程序到mac桌面应用程序
- 30. 如何将数据从airwatch发送到iOS应用程序
他们没有。你为什么认为你需要这个? – EJP
@EJP根据我的理解,DHCP客户端有时会在DHCP服务器获取IP地址之前,通过将广播标志设置为0来请求单播响应。DHCP服务器应该将响应发送到其在DISCOVER消息中传送的MAC地址。喜欢听到你对此的解释。 – Hong