select에 대해...
글쓴이: 살자 / 작성시간: 목, 2003/09/04 - 1:23오후
select 사용시
struct timeval tim; tim.tv_sec = 0; tim.tv_usec = 0; while(1) { select(MAXfd, &rset, NULL , NULL,&tim); if(FD_ISSET(sockfd)) { if((readbyte = read(sockfd, recvBuff, MAXSIZE)) > 0) { } } }
위의 코드 처럼 구현을 했을때..
클라이언트에서 Close를 하면 어떻게 체크를 해야 하는지여?
고수님들의 조언 부탁드립니다.
Forums:
Re: select에 대해...
close 해도 select 되어 내려오게 되며, read, recv 에서 0 을 return 합니다.
---
http://coolengineer.com
일반적으로 소켓 옵션을 보거나 클라이언트로부터 read한 값이 0일 경우
일반적으로 소켓 옵션을 보거나 클라이언트로부터 read한 값이 0일 경우
클라이언트에서 종료한 것으로 보는 것 같습니다.
KT하이텔, 앱스 개발자
부연.
select에서 readfd가 선택되는 경우 중의 하나가 FIN을 받았을때입니다.
(즉, 저쪽에서 먼저 close했을때)
뭔가 있다고 해서 읽을려고 했는데 아무것도 없을뿐더러 에러도 아니라면,
저쪽에서 끊자는 것이니까 이쪽에서 close하면 됩니다.
댓글 달기