【发布时间】:2012-04-16 18:40:32
【问题描述】:
我试图在 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 块中的所有其他行都不执行,返回时客户端不为空。那么如何判断连接是否建立成功呢?
【问题讨论】:
-
堆栈跟踪说明了什么?
-
它什么也不打印。我认为它也跳过了
e.printStackTrace()。 -
不可能。我建议你重新编译并重新测试。另见我的回答。
标签: java android nio socketchannel