소케통신에서 shutdown() 후에 send, recv의 리턴값에 대한 의문
글쓴이: chakan01 / 작성시간: 수, 2004/08/25 - 1:43오후
아시겠지만 함수원형은 다음과 같습니다.
#include <sys/socket.h>
int shutdown(int sockfd, int howto);
클라이언트에서 주는 문자열은 Echo해주는 서버가 있습니다.
그리고, 클리아언트에서
socket생성
connect하고나서
shutdown(sockfd, 0); /* read-half of the connection is closed */
send (); /* 이부분은 send가 되어집니다. read부분만 shutdown했으므로 */
recv () ; /* 이부분에서 리턴값이 -1이 되어야 맞는것 같은데 Linux (i386) 에서 실행해보니 0이 리턴이 됩니다. */
그리고, 다른 send에서도 궁금합니다.
다음과 같이해봅니다.
socket생성
connect
shutdown(sockfd, 1); /* write-half of the connection is closed */
send(); /* 이부분도 -1이 리턴되어야 하는데, Broken Pipe가 나오면서 비정상종료합니다. */
왜 recv, send의 리턴값이 -1이 안나오는지 궁급합니다.
Forums:
shutdown()은 half close 입니다.. man page를 다
shutdown()은 half close 입니다.. man page를 다시 확인해 보심이..
shutdown()후에 recv의 return 값이 0인것이 맞는것 같습
shutdown()후에 recv의 return 값이 0인것이 맞는것 같습니다.
If the connection has been gracefully closed, the return value is zero.
답변 감사합니다.
열씨미!
댓글 달기