用Connector.open耗尽文件描述符

时间:2014-02-17 15:14:18

标签: java java-me network-programming

以下是大多数相关代码,在带有FRC Java映像的cRIO上运行:

try {
        SocketConnection http = (SocketConnection) Connector.open("socket://" + BEAGELIP);
        InputStream data = http.openInputStream();
        database = "";
        int p = data.read();
        while (p >= 0) {
            database += (char) p;
            p = data.read();
        }
        data.close();
        http.close();
} catch (Exception e) {
    System.out.println(e);
}

正在反复调用此方法。

重复连接失败后(例如,服务器未插入),IOException从java.io.IOException: ConnectException: connect refused切换到java.io.IOException: errno: 24 on fd:-1 during socket create

我们认为可能发生这种情况的原因是因为失败时Connector.open返回null,我们不能close(),冻结文件描述符。

在此过程中阻止所有文件描述符被用尽的正确方法是什么?

如果有人能就如何做到这一点提出建议,那就太好了。

1 个答案:

答案 0 :(得分:0)

你的关闭必须在finally {}块中。否则,如果发生异常,它们就不会发生,并且迟早会有例外,