안녕하세요
현재 갤럭시S 에서 소켓 통신을 구현하고 있습니다.
서버 접속, 통신 잘 됩니다.
아래와 같은 구조를 가지고 있습니다.
Activity -> SocketManager -> Inner class (Thread - Read)
이런 구조이고요. SocketManager는 일반 클레스, Inner Class는 Input Stream을 read하는 간단한 쓰레드 입니다.
데이터를 읽으면 clone 하여 SocketManager에게 Message로 전달합니다.
Inner class의 쓰레드에서
이녀석을 DataInputStream socketReader.read() 하고 있죠
문제는 프로그램 종료시 혹은 죽어라!!! 이벤트 시에 socketReader.close() 와 socket.close()를 호출해도
쓰레드 - socketReader.read 호출이 block 상태에서 풀리지 않습니다 ( 2 ~ 3 분 가량 )
그리고 2 ~ 3 분 정도 시간이 지나면, read 함수가 -1을 리턴 하고요 -_-)
그래서 임시적으로 read 함수 -1 과 null == socket 일때 쓰레드를 종료하게 해놓았습니다만.
input stream이 정상적으로 닫혔을까 하는 의문이 남네요.
재 시작하면 정상적으로 통신은 잘됩니다!!
혹시 기기 문제인지.. 이런 문제를 겪으신분 없으신가요??
또 한가지 추가하자면 DataInputStream 대신 BufferedReader를 사용했을때 close를 호출하면
2 ~ 3 분정도 아예 블럭 되 버립니다...
문서에는 분명 Socket과 inputStream outputStream 둘다 close 해주라고 하던데.. 조언좀 부탁드립니다..



