티스토리 뷰
반응형
struct timeval tv_timeo = { 3, 500000 }; /* 3.5 second */
if (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv_timeo, sizeof( tv_timeo )) == -1)
{
/* error */
}
if (setsockopt( fd, SOL_SOCKET, SO_SNDTIMEO, &tv_timeo, sizeof( tv_timeo )) == -1)
{
/* error */
}
위의 예에서 보면 SO_RCVTIMEO과 SO_SNDTIMEO을 3.5초로 지정하였다.
이후에 send(2)나 recv(2) 혹은 sendto(2), recvfrom(2)을 블로킹 모드로 사용하면 해당 시간 내에 데이터가 수신되지 않으면 에러로 판단하고 -1을 리턴한다.
물론 errno는 EAGAIN(= EWOULDBLOCK)으로 지정된다.
만일 리스너 소켓에 SO_RCVTIMEO를 지정하고 accept(2) 호출시에 지정된 타임아웃 동안 새로운 접속이 없으면 recv(2)처럼 EAGAIN 에러로 리턴된다.
반응형
'프로그래밍 > C, C++' 카테고리의 다른 글
도메인 이름만으로 서버 접속하기 (0) | 2019.08.09 |
---|---|
윈도우 TCP 서버 소켓 생성 (0) | 2019.08.09 |
Serial 통신 클래스 (0) | 2019.07.24 |
fsync() - 파일에 쓴 데이터와 실제 하드웨어의 동기를 맞춘다 (0) | 2019.06.28 |
포인터 함수 배열 (0) | 2019.06.28 |
댓글
반응형
최근에 올라온 글
- Total
- Today
- Yesterday