나는 안드로이드에있는 두 개의 에뮬레이터 사이에 소켓 채널을 만들려고했다. 나는 (IP, 포트)에서 다른 에뮬레이터를 시작하지 않은자바에서 연결이 설정되었는지 확인하는 방법은 무엇입니까?
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