socket close 관련 질문.
글쓴이: 하하 / 작성시간: 화, 2004/07/06 - 10:09오후
혹시 close(sockfd)를 할때
쓰레드가 블럭 되는 현상을 경험 하신 분 계신가요?
strerror(errno)를 해보면 아래와 같은 에러 메세지가 떨어집니다.
Invalid or incomplete multibyte or wide character
위 경우는 모바일 서버를 개발하면서 처음 접해 본것이구요...
close를 했을 경우 수초(5~6) 동안 close를 호출한 쓰레드가 블럭됩니다.
불행히도 close를 호출하는 쓰레드는 모든 데이터를 읽는 쓰레드라서 해당
소켓이 닫힐 때 까지 불통입니다.....
크.. 조언 부탁 드립니다.^^
Forums:
linger나 shutdown 을 찾아보시기 바랍니다.
active close 하고 관계 되는것 같은데 위에 두개를 찾아 보시면 해결 되시리라
생각됩니다.
^____^; 방가여
해당 소켓의 linger 옵션이 세팅되어 있는게 아닌가요?
해당 소켓의 linger 옵션이 세팅되어 있는게 아닌가요?
만약 소켓을 close하지 않고 종료하면 어떻게 되나요?
만약 소켓을 close하지 않고 종료하면 어떻게 되나요?
예를 들어 종료할때 close를 빼먹었을때, 또는 ctrl-c 를 눌러 종료되었을때 등..
리소스가 반환되나요?
그리고 위의 경우같은 경우 리소스를 반환하게 하는 방법도 알려주세요 ^^;;
OTL 즐!!!! (좌절 금지!!!)
....
반환되어요
프로세스가 죽거나 OS가 셧다운될때 OS 가 소켓을 정리해주어요
그러나 랜선이 뽑히거나 OS가 '꽥'하고 죽게 되면.... 상대편은 그것을 감지못하는
이른바 half-open 상태의 문제가 발생할수 있게 되므로... keep-alive를 액티브
시켜 오랜시간 통신이 없는 커넥션을 검증하기도 하는데... 실제 응용에서는 그것
보다는 어플리케이션 자체에서 구현한 폴링 메카니즘을 주로 사용합니다.
감사합니다.;
답변 감사드립니다. 말씀중에 모르는 말이 있어서 질문하겠습니
답변 감사드립니다. 말씀중에 모르는 말이 있어서 질문하겠습니다. ^^;;
폴링 메카니즘이란것이 해깔려서 그런데요.
혹시 어떤 작업이 끝날때까지 대기하는 걸 말씀하시는건가요?
초보라서 모르는게 많습니다. 이해해 주세요.
OTL 즐!!!! (좌절 금지!!!)
폴링은... 루프를 돌면서 조건을 체크하는 것을 말합니다. 반대는 인터럽
폴링은... 루프를 돌면서 조건을 체크하는 것을 말합니다. 반대는 인터럽트 정도 될라나요..
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
감사합니다 ^^
답변 감사합니다 ^^
OTL 즐!!!! (좌절 금지!!!)
댓글 달기