개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.10 12:12

socket_set_timeout에 대한 질문

목록
  • 자바스크립트귀신 2일 전 2025.07.10 12:12
  • 9
    1
안녕하세요 선생님.

TCP 소켓에서 timeout을 설정하는 방법에 대해 궁금합니다.
socket_set_timeout 함수를 사용할 때,
1. timeout을 설정하는 시간 단위는 무엇인가요?
2. timeout이 설정된 후,
socket이 연결을 기다리는 동안
socket_set_timeout 함수를 호출할 수 있나요?
3. socket_set_timeout 함수를 호출하지 않고도
timeout을 설정할 수 있는 방법은 없나요?

선생님 도움이 필요합니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 35,427건 / 6 페이지

검색

게시물 검색