【发布时间】:2017-01-01 04:24:51
【问题描述】:
我做了一个:
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;
}
在我的 android 应用程序中,但它从不解析主机名,它总是抛出异常,无论我使用什么名称。
但是在同一个模拟器上使用互联网是可行的,我已经添加了
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
到 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;
}
【问题讨论】:
-
我假设你有一个 Server.java 类?我知道地址查找失败时会抛出 UnknwnHostException。
-
这段代码将查询地震服务器,你想要的输出是什么?
-
通过解析主机名在 UDP 上查询 monster.idsoftware.com,通过端口 27950 上的 UDP 连接到该 IP,发送“ÿÿÿÿgetservers 68 'all'”,其中 68 是协议版本。接收 UTF-7 编码的主机列表,将其解码为 ip+端口列表,显示该列表。但我被困在问题 1 上。
-
我最好的建议是尝试将其加载到外部 android 设备上并从那里测试,我不知道你是否可以在模拟器上使用 UDP
-
这可能是代理或 nat 的问题。