Java - 在 Windows 和 Mac 上,如何确定网络类型?

Java - 在 Windows 和 Mac 上,如何确定网络类型?

我正在开发一个可以在 Windows 和 Mac 上运行的 Java 应用程序。它可以与各种不同的服务器通信,但需要根据使用 WiFi 还是有线连接做出不同的行为。

有没有什么办法可以查明它正在使用哪一个?

我已经查看过用法NetworkInterface.getNetworkInterfaces(),但它并没有告诉我NetworkInterface正在使用哪一个,以及它是否是 WiFi。

答案1

执行此操作的唯一方法是使用本机 API。

这些可以通过 Java 使用 JNA 进行交互。在 Mac 上,你需要使用类似https://github.com/shannah/Java-Objective-C-Bridge在 JNA 之上使用 Objective-C 框架。

答案2

java.lang.ProcessBuilder您可以ipconfig /all在 Windows 和/sbin/ifconfig -aLinux(以及 Mac?)下执行来回答问题“我如何连接到网络?”。

为了更加完整和准确,您可以强制您的协议添加自动自适应行为:质量、带宽、丢失数据包的数量等等,让您决定如何驱动您的协议。

您可以使用 TCP/IP 来驱动交换逻辑(行为、控制),并使用 UDP 来传输数据。第一层:UDP 负责发现和数据,第二层建立在 TCP 上以提供会话管理。

相关内容