개발자 Q&A

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

2025.07.25 22:14

Swoole Client Select 관련 질문

목록
  • 암호화마스터 1일 전 2025.07.25 22:14
  • 21
    1
저는 Swoole Client Select를 사용하여 TCP 소켓을 연결하고 데이터를 전송하려고 합니다.
하지만, select() 함수를 사용하여 읽기/쓰기 가능 여부를 확인하는 부분이 이해가 잘 안 가고 있습니다.
select() 함수의 반환값과 읽기/쓰기 가능 여부를 어떻게 확인할 수 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    Swoole Client Select의 select() 함수는 파일 디스크립터를 포함하는 배열을 인자로 받고, 읽기/쓰기 가능 여부를 확인합니다.

    select() 함수의 반환값은 다음과 같습니다.

    - 리턴 값 0: select() 함수에 인자로 받은 파일 디스크립터 중 읽기/쓰기 가능 여부를 확인할 수 있는 파일 디스크립터가 없습니다.
    - 리턴 값 -1: select() 함수 호출 중 오류가 발생했습니다.
    - 리턴 값 1: select() 함수에 인자로 받은 파일 디스크립터 중 읽기 가능 여부를 확인할 수 있는 파일 디스크립터가 있습니다.
    - 리턴 값 2: select() 함수에 인자로 받은 파일 디스크립터 중 쓰기 가능 여부를 확인할 수 있는 파일 디스크립터가 있습니다.

    읽기/쓰기 가능 여부를 확인하려면, select() 함수의 반환값에 따라서 다음을 확인하면 됩니다.

    - 리턴 값 1: select() 함수에 인자로 받은 파일 디스크립터 중 읽기 가능 여부를 확인할 수 있는 파일 디스크립터가 있습니다. 따라서, select() 함수의 인자로 받은 파일 디스크립터 중 읽기 가능 여부를 확인할 수 있는 파일 디스크립터를 확인하면 됩니다.
    - 리턴 값 2: select() 함수에 인자로 받은 파일 디스크립터 중 쓰기 가능 여부를 확인할 수 있는 파일 디스크립터가 있습니다. 따라서, select() 함수의 인자로 받은 파일 디스크립터 중 쓰기 가능 여부를 확인할 수 있는 파일 디스크립터를 확인하면 됩니다.

    예를 들어, select() 함수의 반환값이 1이면, select() 함수의 인자로 받은 파일 디스크립터 중 읽기 가능 여부를 확인할 수 있는 파일 디스크립터를 확인하면 됩니다.

    다음은 예제입니다.

    #hostingforum.kr
    php
    
    $socket = stream_socket_client('tcp://example.com:8080', $errno, $errstr, 30);
    
    $read = array($socket);
    
    $write = array();
    
    $except = array();
    
    
    
    $result = swoole_client_select($read, $write, $except, 1);
    
    
    
    if ($result === 1) {
    
        // 읽기 가능 여부를 확인할 수 있는 파일 디스크립터가 있습니다.
    
        // 따라서, select() 함수의 인자로 받은 파일 디스크립터 중 읽기 가능 여부를 확인할 수 있는 파일 디스크립터를 확인하면 됩니다.
    
        $readable = $read;
    
    } elseif ($result === 2) {
    
        // 쓰기 가능 여부를 확인할 수 있는 파일 디스크립터가 있습니다.
    
        // 따라서, select() 함수의 인자로 받은 파일 디스크립터 중 쓰기 가능 여부를 확인할 수 있는 파일 디스크립터를 확인하면 됩니다.
    
        $writable = $write;
    
    } else {
    
        // 읽기/쓰기 가능 여부를 확인할 수 있는 파일 디스크립터가 없습니다.
    
        // 따라서, select() 함수를 다시 호출하면 됩니다.
    
    }
    
    


    이 예제에서는 select() 함수의 반환값에 따라서 읽기/쓰기 가능 여부를 확인할 수 있는 파일 디스크립터를 확인합니다.

    2025-07-25 22:15

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

검색

게시물 검색