【发布时间】:2015-10-13 18:31:36
【问题描述】:
我有 Android 设备,它通过以太网连接到网络。如何获取此连接的 DHCP 信息?
【问题讨论】:
我有 Android 设备,它通过以太网连接到网络。如何获取此连接的 DHCP 信息?
【问题讨论】:
对于非 Wifi,没有类似 WifiManager 的类。
ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Service.CONNECTIVITY_SERVICE);
Log.i("routes ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getRoutes().toString());
Log.i("domains ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDomains().toString());
Log.i("ip address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getLinkAddresses().toString());
Log.i("dns address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDnsServers().toString());
【讨论】:
您应该可以使用ConnectivityManager.getAllNetworks() 来获取已连接的网络阵列:
http://developer.android.com/reference/android/net/ConnectivityManager.html#getAllNetworks()
然后Network.getSocketFactory() 连接您的网络。 SocketFactory 将允许您检查可以在连接上创建的Sockets。
http://developer.android.com/reference/android/net/Network.html#getSocketFactory()
从此,只需从SocketFactory.createSocket() 创建一个Socket,它就会包含您想要的信息,例如Socket.getLocalSocketAddress() 等。
http://developer.android.com/reference/javax/net/SocketFactory.html#createSocket()
【讨论】: