Кто-нибудь может сказать мне, почему это не работает в эмуляторе Android? Из браузера у меня есть доступ, а сервер внутренний. Все, о чем я могу думать, это то, что мне не хватает какой-то конфигурации в моем приложении, чтобы оно могло получить доступ к сетевому уровню.
try {
InetAddress server = Inet4Address.getByName("thehost");
//Doesn't work either
//or InetAddress server2 = Inet4Address.getByAddress(new String("192.168.1.30").getBytes());
if (server.isReachable(5000)){
Log.d(TAG, "Ping!");
}
Socket clientsocket = new Socket(server, 8080);
} catch (UnknownHostException e) {
Log.e(TAG, "Server Not Found");
} catch (IOException e) {
Log.e(TAG, "Couldn't open socket");
}
Выдает исключение UnknownHostException
Спасибо




Что касается конфигурации, единственная настройка, которая вам понадобится для доступа к Интернету из вашего приложения, - это разрешение INTERNET, которое активируется добавлением следующей строки за пределами тегов приложения в манифест вашего приложения.
<uses-permission android:name = "android.permission.INTERNET" />
Таким образом, манифест будет следовать этой общей конструкции
<manifest xmlns:android = "http://schemas.android.com/apk/res/android" package = "com.example.android.apis">
<uses-permission android:name = "android.permission.INTERNET" />
<application
android:name = "MyApplication"
android:label = "@string/application_title"
android:icon = "@drawable/my_icon">
[ .. Your Activities go here ]
</application>
</manifest>
Это может не сработать из-за тайм-аута. Поскольку вам нужны права root для отправки пакета ICMP, а реализация isReachable будет использовать медленную TCP-версию ECHO. Проверьте файл javaDoc.