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

标签 java android sockets exception


我正在尝试将我的 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/

相关文章:

c - recv() 后数组值意外更改

python - 创建多线程 tcp 服务器 python 3

java - UDP 数据报中发送的消息未经过净化?

java - AES-256 加密 : Generate 256bits(32bytes) key from my fixed string

android - 使用 Firebase 云消息传递时消息无法转换为 RemoteMessage 错误

java - 在 ReSTLet 2.0 中获取请求属性

Android 谷歌驱动器 sdk 和 dropbox sdk

android - GPS通知 "Location set by gps"

java - 如何在 spring-data-rest 中使用 Pageable 作为 get-query 参数?

java - Eclipse 抛出 "Unexpected Version: 0"错误