Android:在局域网

时间:2017-05-10 08:26:13

标签: java android network-programming lan

有谁知道如何使用服务器名称查找服务器的IP地址?我尝试过以下方法:

InetAddress[] addresses =  InetAddress.getAllByName(serverName);

InetAddress address = InetAddress.getByName(serverName);

如果服务器的名称是我本地连接的服务器(例如服务器名称" TestServer"),则抛出 UnknownHostException 。但是,如果我传入: www.google.com ,它就可以了!它只在我尝试使用服务器名称查找服务器(本地连接)时失败。

有什么想法吗?

由于

注意:我在AndroidManifest.xml中设置了权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

1 个答案:

答案 0 :(得分:0)

试试这段代码:

InetAddress addr = InetAddress.getByName("ServerName");
String serverName= addr.getHostName();
Log.e("ServerName",serverName);

您必须在设备中设置网络DNS,如下所示

enter image description here

或以编程方式设置:

添加权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

更改DNS:

android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS1, "192.168.0.5");
android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS2, "192.168.0.2");