2009-01-14 54 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。