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