【发布时间】:2014-04-11 03:36:54
【问题描述】:
我正在尝试将我的 Android APP 连接到我为它制作的 Java 服务器。
我有一个问题,服务器运行良好,连接到服务器时应用程序也运行良好。
当我关闭服务器并尝试连接到它时,问题就出现了。假设Socket.connect() 会抛出一个我会捕获的异常,但不会抛出这个异常。
我不知道我做错了什么,我把我的代码贴在这里供你阅读,也许有人可以帮助我。
感谢所有伙伴 :D
连接属性:
static Socket s;
static DataOutputStream output;
static boolean connected;
需要连接的方法:
public void enviarDatos(int r, int g, int b){
connect();
if(connected){
panel.setText(panel.getText() + "\nEnviando datos...");
try {
output.writeUTF(r + "," + g + "," + b);
} catch (Exception e) {
panel.setText("Error: " + e.getMessage());
}
disconnect();
}
}
连接和断开的方法有:
public void connect(){
try {
s = new Socket();
int timeout = 1000;
s.connect(new InetSocketAddress(SERVER_ADDRESS, SERVER_PORT), timeout);
output = new DataOutputStream(s.getOutputStream());
connected = true;
panel.setText("Conexion exitosa.");
} catch (Exception e) {
connected = false;
panel.setText("Error: " + e.getMessage());
}
}
public void disconnect(){
try{
output.close();
s.close();
connected = false;
} catch(Exception e){
panel.setText("Error: " + e.getMessage());
}
}
【问题讨论】:
-
您是在单独的线程中执行它吗?如果是这样,那么您无法触摸线程内的面板视图。如果不是,则主 UI 不允许您进行任何联网。但是您应该以任何方式获得例外。而不是
panel.setText在 catch 语句中使用e.printStackTrace()。 -
不,那是同一个线程。当我打开服务器时,它工作正常,服务器接收到文本,一切正常,问题是我关闭服务器时。它的作用相同,就像服务器已打开一样。问题是它永远不会被捕获,因为没有抛出异常。
标签: java android sockets exception