0

我试图在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,端口)中启动另一个模拟器,这意味着连接总是会失败。当我开始调试上面的代码时,我发现

    if (!client.isConnected()) {

然后它跳转到 catch 块:

     e.printStackTrace();

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

4

1 回答 1

0

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

于 2012-04-16T22:15:25.540 回答