소켓 프로그램을 짤때 타이머 사용하는 법 좀 가르쳐 주세요.

글쓴이: 익명 사용자 / 작성시간: 목, 2001/11/22 - 11:37오전
소켓프로그램에서 서버가 클라이언트에게 어떤 메세지를 보낸 뒤...
5초를 기다리다가 그 전에 메세지가 오면 그 메세지를 출력하고..
5초내에 메세지가 오지 않으면 메세지를 전송하라는 명령을 클라이언트측에게
보내는 기능을 구현하려고 하는데...
어떻게 할 지 모르겠습니다.
타이머함수 setitimer, alarm, select등을 사용해 봤는데..
5초내에 메세지가 온 사실만 알고 , 그 메세지를 버퍼에 저장해서 출력하지는
못하더군요
어떻게 프로그램을 짜면 될까요?
꼭 좀 대답해 주세요..
Forums:
Re: 소켓 프로그램을 짤때 타이머 사용하는 법 좀 가르쳐 주세요
select()를 사용하면..
시간내에 안오면 메세지 보내라고 하시고...
시간내에 오면는 IS_FDSET()을 사용하여..
해당 socket에 recv이벤트가 발생하면 이것이 참값을 가지고 있지요..
그렇게해서 read()를 사용해서 버퍼를 읽으면 되겠지요 예제코드는 다음과 같
을겁니다.
main()
{
fd_set readfs;
int sockfd;
/* socket 생성 루틴 들어가고 */
FD_ZERO(&readfs);
FD_SET(sockfd, &readfs);
if(select(.....) < 0)
{
/* 리트라이 요구 */
}
else
{
if(IS_FDSET(sockfd, &readfs))
{
read(.....);
/* 처리 */
}
}
}
이런식으로 하면 될거 같네여 ^^
댓글 달기