2018년 8월 6일 월요일

setsockopt SO_RCVTIMEO 윈도우에서 적용하기


이번에 개발하면서 recv 블로킹이 해제될 수 있게 타임아웃이 필요함

소켓 옵션중에
setsockopt so_rcvtimeo
통해서 recv 타임아웃을 설정 할 수 있음

근데 타임아웃이 걸리지 않아 찾아보니

https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-setsockopt
윈도우는 DWORD를 사용해야 함

<윈도우용>
DWORD tv = 1000; //밀리세컨드
setsockopt(c->fd, SOL_SOCKET, SO_RCVTIMEO, (char*)&tv, sizeof(tv));

<그외>
timeval tv = { 0, 10000 }; //seconds, microseconds
setsockopt(c->fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));