개발자 Q&A

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

2025.05.25 03:14

socket_set_blocking 함수와 관련하여 질문내용을 다음과 같이 작성해 보았습니다.

목록
  • ORM수집가 7일 전 2025.05.25 03:14 인기
  • 104
    1
socket_set_blocking 함수 사용 시 오류 발생

교수님, socket_set_blocking 함수를 사용하여 소켓의 블록킹 모드를 변경하였는데, 만약 소켓이 이미 블록킹 모드에서 실행 중일 경우 오류가 발생합니다. 이 경우 어떻게 해야 하는지 알려주세요.

소켓의 블록킹 모드를 변경할 때는 socket_set_blocking 함수를 사용하는데, 이 함수를 사용하여 소켓의 블록킹 모드를 변경한 후, 소켓을 사용하는 부분에서 오류가 발생하는 것을 확인하였습니다.

이러한 오류는 어떻게 해결할 수 있는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  7일 전



    socket_set_blocking 함수를 사용하여 소켓의 블록킹 모드를 변경할 때, 이미 블록킹 모드에서 실행 중인 소켓에 이 함수를 호출하면 에러가 발생합니다.

    이러한 오류를 해결하기 위해서는, 소켓의 블록킹 모드를 변경하기 전에, 현재 소켓의 블록킹 모드를 확인하여 블록킹 모드인 경우에만 블록킹 모드를 변경하는 코드를 작성해야 합니다.

    예를 들어, 소켓의 블록킹 모드를 확인하기 위해 socket_get_option 함수를 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    int blocking = 1;
    
    if (socket_get_option(sock, SOL_SOCKET, SO_BLOCKING, &blocking) == 0) {
    
        if (blocking == 1) {
    
            // 이미 블록킹 모드이므로 블록킹 모드를 변경할 필요가 없습니다.
    
        } else {
    
            // 블록킹 모드를 변경합니다.
    
            if (socket_set_blocking(sock, 1) == 0) {
    
                // 블록킹 모드가 변경되었습니다.
    
            } else {
    
                // 블록킹 모드 변경 실패
    
            }
    
        }
    
    } else {
    
        // 에러가 발생했습니다.
    
    }
    
    


    위의 코드를 통해 소켓의 블록킹 모드를 확인하고, 이미 블록킹 모드인 경우에만 블록킹 모드를 변경할 수 있습니다.

    2025-05-25 03:15

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

검색

게시물 검색