마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

소켓통신에서 Exception 이 발생 되지 않는 경우 질문드립니다.

0 추천
안녕하세요?

서비스 내에서 소켓 생성후 서버와 접속하고 있습니다.

서버자체 방화벽 타임아웃이 10분이라 정상적인 상황에서는 10분마다 한번씩 SocketException이 발생합니다. 이런경우 서버와의 접속이 끊어져서 재접속하도록 되어 있습니다.

그런데 간혹 서버와 접속이 끊겼음에도 불구하고 Exception이 발생하지 않습니다. 이런 경우 isConnected  이런 검사를 해도 값은 true인데 만약 이때 소켓으로 값을 넘긴다던가 하면 그제서야 exception이 발생합니다.

혹시 어떤 경우에 이런 현상이 발생하게 되는 것인가요?

그리고 이런 상태로 지속되다 짧게는 20분 길게는 19시간 만에 서비스가 onCreate 되면서 다시 살아납니다. onDestroy발생되지도 않았구요..

서비스 시작하라고 호출하는 startService의 모든 부분에  로그를 남겨 봤는데 호출을 받고 다시 시작하는것은 아니더라구요..

 

제 질문을 요약하자면

1. 서버와의 접속이 끊어졌음에도 SocketException에 들어오지 않는 경우

2. 서비스가 갑자기 되살아 나는 경우

입니다..어느 부분을 살펴봐야 할까요?
SM21 (780 포인트) 님이 2014년 7월 15일 질문

1개의 답변

0 추천
안드로이드 소켓은 동기식이라 read시 블라킹 되어있습니다.

 소켓에서 read 시 SoTimeOut 값을 줄수 있습니다.

 서버 클라이언트 프로토콜을 수정하여 주기적으로 연결되었는지 확인을 해야 할 것 같네요.
안_드루이드 (14,510 포인트) 님이 2014년 7월 18일 답변
어디에서 부터 접근해야 할지 막막했는데 덕분에 뭔가 해볼수 있게 되서 정말 감사해요..^^
Socket Exception 발생하지 않는 문제 질문드립니다..
...