我试图在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 块中的所有其他行都不执行,返回时客户端不为空。那么如何判断连接是否成功建立呢?