如何判断是否在java中建立了连接?

时间:2012-04-16 18:40:32

标签: java android nio socketchannel

我试图在android中的两个模拟器之间构建一个套接字通道。我写了以下代码:

    public SocketChannel connect2node(String ip, int port) {
        SocketChannel client = null;
        try {
            client = SocketChannel.open(new InetSocketAddress(ip, port));
            client.configureBlocking(false);
            client.register(selector, SelectionKey.OP_READ);

            if (!client.isConnected()) {
                Log.i("server connection", "error");
                return null;
            }
        } catch (IOException e) {
            String s = e.getMessage();
            e.printStackTrace();
        }

        return client;
    }

注意我没有在(ip,port)中启动另一个模拟器,这意味着连接将始终失败。当我开始调试上面的代码时,我发现了

    if (!client.isConnected()) {

然后跳转到catch块:

     e.printStackTrace();

catch块中的所有其他行都没有执行,返回时客户端不为null。那么如何判断连接是否成功建立?

1 个答案:

答案 0 :(得分:0)

isConnected()测试毫无意义。如果open()无法连接,则会抛出异常。