我试图在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。那么如何判断连接是否成功建立?
答案 0 :(得分:0)
isConnected()测试毫无意义。如果open()无法连接,则会抛出异常。