개발자 Q&A

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

2025.08.09 00:42

stream_select 함수에 대한 질문

목록
  • Rust연구가 1일 전 2025.08.09 00:42
  • 13
    1
저는 stream_select 함수를 사용하여 TCP 소켓에서 데이터를 읽어오는데 문제가 있습니다.
stream_select 함수의 두 번째 인자인 read_array에 대해 궁금합니다.
read_array는 여러 개의 소켓을 포함할 수 있는지 궁금합니다.
만약 여러 개의 소켓을 포함해야 한다면, 그 소켓들이 모두 읽어올 수 있는 데이터가 있는지 어떻게 확인할 수 있나요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    stream_select 함수의 두 번째 인자인 read_array는 여러 개의 소켓을 포함할 수 있습니다.
    read_array는 소켓의 파일 디스크립터를 포함하는 배열로, 여러 개의 소켓을 포함할 수 있습니다.

    만약 여러 개의 소켓을 포함해야 한다면, 그 소켓들이 모두 읽어올 수 있는 데이터가 있는지 확인하려면 stream_select 함수의 리턴 값을 확인하면 됩니다.
    stream_select 함수의 리턴 값은 읽을 수 있는 소켓의 수를 나타냅니다.
    따라서, 리턴 값이 0보다 크면, read_array에 포함된 소켓 중 하나 이상이 읽을 수 있는 데이터가 있습니다.

    예를 들어, 다음 코드는 stream_select 함수를 사용하여 TCP 소켓에서 데이터를 읽어오는 예제입니다.

    #hostingforum.kr
    php
    
    $read_array = array($sock1, $sock2, $sock3);
    
    $write_array = array();
    
    $except_array = array();
    
    
    
    $read_count = stream_select($read_array, $write_array, $except_array, 0);
    
    
    
    if ($read_count > 0) {
    
        // 읽을 수 있는 소켓이 하나 이상이므로, 각 소켓에서 데이터를 읽어옵니다.
    
        foreach ($read_array as $sock) {
    
            $data = fread($sock, 1024);
    
            // 데이터를 처리합니다.
    
        }
    
    }
    
    


    이 예제에서, stream_select 함수의 리턴 값인 $read_count는 읽을 수 있는 소켓의 수를 나타냅니다.
    따라서, $read_count가 0보다 크면, read_array에 포함된 소켓 중 하나 이상이 읽을 수 있는 데이터가 있습니다.

    2025-08-09 00:43

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

검색

게시물 검색