私はアンドロイドの2つのエミュレータ間にソケットチャネルを構築しようとしました。私は、次のコードを書いた:私は(IP、ポート)で、別のエミュレータを開始していないJavaで接続が確立されているかどうかを確認するには?
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;
}
注意、接続は常に失敗することを意味します。私は上記のコードのデバッグを開始すると、それはそれは、その後、catchブロックにジャンプ
if (!client.isConnected()) {
に来たとき、私が見つかりました:catchブロックで
e.printStackTrace();
他のすべての行が実行されず、クライアントがあります戻り値はnullではありません。では、接続が正常に確立されたかどうかはどうすればわかりますか?
スタックトレースとは何ですか? –
これは何も印刷しません。私は 'e.printStackTrace()'もスキップしたと思う。 – stackunderflow
不可能。再コンパイルして再テストすることをお勧めします。私の答えも見てください。 – EJP