서버소켓과, 모바일장치( 클라이언트 소켓) 이 연결 되어 실시간 채팅처럼 구현을 하려고 합니다.
서버에서 보낸 메시지는 인풋스트림에 들어온 바이트가 0보다 크면 그 크기만큼 버퍼에 담아서 구현 하였습니다.
while(true) {
if( is.available() == 0 ) continue;
byte[] buffer = new byte[is.available()];
is.read( buffer , 0 ,is.available() );
... more code
}
그런데 저렇게 했더니.. 서버에서 소켓을 끊어버린것을 클라이언트가 알지를 못합니다.
검색을 좀 해봤더니, InputSteam.read() 메서드는 소켓이 끊어지면 -1 을 리턴한다고 합니다.
int value = 0;
while( true ) {
value = is.read();
if(value == -1 ) {
return;//연결끊김.
}
//value값을 버퍼에 담고 계속 read 함.
}
연결끊김을 감지 하기 위해 저렇게 한바이트씩 읽는게 맞는건지 모르겠습니다.
여러분들은 소켓에 들어온 정보를 어떻게 처리 하시나요?
소켓의 연결 끊김은 어떻게 감지 하시나요?
도움부탁드립니다.