2009-01-14 113 views
17

任何人都可以告訴我爲什麼這不起作用的Android模擬器?從瀏覽器中我可以訪問,服務器是內部的。我能想到的是,我錯過了我的應用程序的一些配置,所以它可以訪問網絡層。Android HTTP連接

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

感謝

回答

30

至於配置得好,只設置你應該需要從應用程序訪問互聯網是互聯網的權限,通過添加啓用了以下行外部應用程序標籤在您的應用程序清單。

<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> 
+1

就是這樣。非常感謝你。 – Eldelshell 2009-01-14 11:56:12

2

它可能仍然無法正常工作。由於您需要根權限才能發送ICMP包,而isReachable的實現將使用ECHO的慢TCP版本。 Chekcout javaDoc。