CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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()들을 초기화하는 방법이 없을까요?

  위 소스의 문제점을 지적해 주세요...



 미리 감사..^^;



[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.