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

Socket Exception 발생하지 않는 문제 질문드립니다..

0 추천
안녕하세요?

gcm사용하지 않고 소켓으로만 메시지를 받도록 구현하고 있는데요..

메시지는 언제 어느시간에 올지 모르기 때문에 소켓은 항상 연결이 되어야 합니다.

서버쪽에서 타임아웃이 있기 때문에 Exception발생시 connect를 다시하고 있습니다..Client쪽 타임아웃은 일단 하루 정도로 설정해 놨습니다.

그런데 간혹 Exception이 발생하지 않는 경우가 있습니다.

그냥 소켓 연결후 receive 대기 상태 인데 갑자기 어떠한 Excption도 발생하지 않습니다..분명 서버에서는 타임아웃으로 연결을 끊었을텐데요..

이전에도 질문 드린적이 있는데 아무리 서버쪽이나 Client쪽을 살펴봐도 도무지 원인을 알 수 없어 이렇게 질문 드립니다.
SM21 (780 포인트) 님이 2014년 8월 6일 질문

2개의 답변

+1 추천
접근 방식이 잘못되었습니다.
3G, LTE 등의 환경에서 소켓을 항상 연결해 놓는다는 것은 불가능합니다.
사용자가 이동하여 연결되어 있는 기지국이 바뀌게 되면 열려있던 소켓이 어떻게 될 지 알 수 없습니다.
구조를 바꾸세요.
익명사용자 님이 2014년 8월 6일 답변
정답이네요........
기지국이 바뀌거나 wifi 변경시 socketException이 발생하게 되므로  이때 소켓을 다시 연결하도록 해 놓았습니다. 그런데 이동중이 아닌데  Exception이 발생하지 않고 있습니다..(서버에서는 10분마다 타임아웃으로 서버 접속을 끊습니다)
0 추천
제가 알기론... 서버에서 소켓을 끊어도 클라에서는 인지가 안된다고 알고있습니다.
이름없음 (900 포인트) 님이 2014년 8월 6일 답변
서버에서 타임아웃으로 소켓연결이 끊어지면 Clinet에서 Excption 발생되고 있습니다..그런데 간혹 발생하지 않는 경우가 있어서 그 원인이 무엇인지 찾고 있습니다.
...