
1. socket_set_timeout 함수는 초 단위로 timeout을 설정합니다.
2. socket_set_timeout 함수를 호출한 후, socket이 연결을 기다리는 동안 다시 호출할 수 없습니다.
3. socket_set_timeout 함수를 호출하지 않고 timeout을 설정할 수 있는 방법은 select() 함수를 사용하는 것입니다.
select() 함수는 여러 socket에 대해 timeout을 설정하고, 읽기/쓰기 가능 여부를 체크할 수 있습니다.
예를 들어, select() 함수를 사용하여 timeout을 설정하는 예제는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
#include
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct timeval tv;
tv.tv_sec = 5; // 5초 timeout
tv.tv_usec = 0;
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);
fd_set read_fds;
FD_ZERO(&read_fds);
FD_SET(sock, &read_fds);
select(sock + 1, &read_fds, NULL, NULL, &tv);
if (FD_ISSET(sock, &read_fds)) {
// socket이 읽기 가능
} else {
// timeout
}
return 0;
}
이 예제에서는 select() 함수를 사용하여 5초 timeout을 설정하고, socket이 읽기 가능 여부를 체크합니다.
2025-07-10 12:13