recv 시 리턴값 0에 대한..
글쓴이: rasungboy / 작성시간: 화, 2004/11/09 - 8:24오전
안녕하세요.
계속 recv 하다 보면 어느순간 상대방에서 접속을 끊지 않았는데도
recv 리턴값이 0일 때가 있더군요. Graceful Disconnect 라고 전 생각하고
저는 접속을 끊는데 상대방쪽에 디버거를 걸어 확인해보면 오히려 상대방쪽은
내쪽이 끊었다고 인식합니다.
접속 끊을때의 상황을 살펴보면 내쪽에선 리턴값이 0인데 recv에 넘기는
버퍼사이즈가 0이더군요.
(즉 사용자 소켓버퍼가 꽉 차서 더이상 받을공간이없을경우)
근데 이렇게 버퍼사이즈가 0 을 넘기게 되면 보통 recv에서는 리턴값을 -1로
하고 errno 를 EAGAIN 이나 EWOULDBLOCK 으로 설정할텐데 왜
리턴값이 0인지 궁금합니다.
recv 에 넘기는 버퍼사이즈가 0일때 간혹 recv 리턴값이 0으로 나올때가
있는것인지요?(접속이 안끊겼어도)
만약 그렇다면 그러면 리턴값이 0이 나와도 접속이 끊김처리를 안해야
한다는것인데... 도저히 모르겠네요.. ^^;;
여러분들의 참고말씀 기달리겠습니다.
Forums:
댓글 달기