Java - 通过MAC地址查找主机

标签 java android network-programming

我有一个 Java/Android 应用程序需要将一些数据发送到本地网络上的服务器。问题是服务器的 ip 地址是动态的,所以找到它的唯一方法是通过它的 MAC 地址查找。 这在 Java 中可能吗?你能看到任何其他选项吗?

最佳答案

通过 MAC 地址查找主机只能在您的本地网络中使用。 Mac 地址是 IP 地址下的一层。不存在基于 Mac 地址到其他网络的路由。

广播/多播

如果您正在寻找仅适用于本地网络的解决方案,那么监听并发送到广播或多播可能是您的一个选择。如果你向一个广播地址发送一个数据包,本地网络中的每台主机都会收到这个数据包,并且可以回答它是否是你正在寻找的服务器。多播在概念上的不同之处在于,只有那些想要接收寻址到特定多播地址的数据包的主机才会接收此数据包。如果您正在使用多播,则需要为您的应用程序选择一个地址,每个客户端都会将数据包发送到该地址,每个被发现的服务器都会监听该地址。甚至存在一些网络(例如一些大学网络),其中多播数据包被路由到一组有限的其他本地网络。

DNS 或其他静态服务器

您可以使用具有静态 IP 地址的第二台服务器,您可以使用它来查找动态 serevr。你的动态服务器会在它改变时告诉你的静态服务器他的 ip 地址。您的客户端会向静态服务器询问动态服务器的地址。这种模式适用于整个互联网,无论您的动态服务器和客户端位于何处。

此静态服务器可以是您的 DNS 服务器或某些 dyndns 提供商的 DNS 服务器。但这不仅限于 DNS。 DNS 旨在找出如何访问服务/服务器,但这可以通过任何协议(protocol)来完成。例如,如果您更喜欢网络服务,这可以通过您开发的一些 http/网络应用程序来完成。

关于Java - 通过MAC地址查找主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8277464/

相关文章:

java - 如何在运行时使用 JAXB 注释

java - Linux 版本检查 Linux 命令或 Java 代码

java - 如何在Java中获取接口(interface)或抽象类方法的注解

java - Netty channel.write 不写消息

java - Intellij Play Intellisense 问题

java - RecyclerView 中没有涟漪效应

Android Ionic Cordova - 错误 : Failed to get absolute path to installed module

android - 在 android 中为两个 ImageView 设置动画

从 tcp 到 udp 的 Java 套接字

java - 使用java获取网络利用率