gpt4 book ai didi

java - Android客户端-Java服务器,Socket不会抛出异常

转载 作者:行者123 更新时间:2023-12-01 06:17:03 25 4
gpt4 key购买 nike


我正在尝试将我的 Android 应用程序连接到我为其制作的 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());
}
}

最佳答案

第一个 connect() 方法与您在大代码块中发布的方法不同,在该代码块中您展示了这两种方法。目前还不清楚您使用哪一个进行连接。尝试将 int timeout 参数添加到 connect() 中,如下所示:

int timeout = 1000; // 1s timeout
s.connect(new InetSocketAddress(SERVER_ADDRESS, SERVER_PORT), timeout);

这应该使 connect 在超时到期后抛出 IOException

希望这能解决您的问题。

关于java - Android客户端-Java服务器,Socket不会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22259413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com