Ste*_*ger 7 java sockets android
我做了一个:
java.net.InetAddress serverAddr;
try {
serverAddr = java.net.InetAddress.getByName(Server.SERVERNAME);
}
catch (java.net.UnknownHostException exception) {
//System.err.println ("wrong server name !!!");
HelloWorldActivity.tv.setText("wrong server name !!!");
return;
}
Run Code Online (Sandbox Code Playgroud)
在我的Android应用程序中,但它永远不会重新解析主机名,它总是抛出一个异常,无论我使用什么名称.
但是在同一个模拟器上使用互联网,我已经添加了
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)
到AndoidManifest.xml
这是那些假设我没有的人的服务器类
public class Server
{
public static String SERVERNAME = "monster.idsoftware.com";
public static String SERVERIP = "209.85.129.99";
public static int SERVERPORT = 27950;
public static int PROTOCOL = 68;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我遇到了类似的问题,我发现在某些版本的android(来自honeycombs)中,默认情况下不允许从主线程执行网络操作.所以你可以通过两种方式解决它.在不同的线程中执行操作或允许在主线程中进行网络操作.要做到这一点,请使用以下内容:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
StrictMode.setThreadPolicy(policy);
Run Code Online (Sandbox Code Playgroud)
我已经找到答案了。无论出于何种原因,您都必须使用:
java.net.InetAddress[] x = java.net.InetAddress.getAllByName(Server.SERVERNAME);
HelloWorldActivity.tv.setText("Address: "+x[0].getHostAddress());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24275 次 |
最近记录: |