| [ CnUnix ] in KIDS 글 쓴 이(By): guest (guest) <211.219.10.15> 날 짜 (Date): 2002년 12월 9일 월요일 오후 08시 19분 08초 제 목(Title): select()함수 설명 부탁드려요... select() 및 FD_SET()을 가지고 loop를 만들었습니다. while(1){ time ++; if (time>3) break; sendto(s,...); FD_SET(s, &recfd); FD_SET(s, *errfd); select(s+1, &recfd, NULL, &errset, &tval); if(FD_ISSET(s, &recfd)) { recvfrom(s,...); break; } else if(FD_ISSET(s, &errfd) //error {... break; } else // timeout { FD_ZERO(&recfd); ---> ??? FD_ZERO(&errfd); ---> 초기화??? continue; } 위 처럼 소켓으로 패킷을 보낸다음 timeval만큼 기다리는데 timeout 상황이 발생하면 세 번까지 재시도를 하려고 합니다. 근데 첫 번째 timeout이 나오면 timeval 만큼의 대기시간 없이 두, 세번째 timeout 상황으로 바로 넘어가 버립니다. FD_ISSET()들을 초기화하는 방법이 없을까요? 위 소스의 문제점을 지적해 주세요... 미리 감사..^^; |