개발자 Q&A

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

2025.04.01 10:27

socket_read 함수 사용 중 오류 해결 부탁드립니다.

목록
  • UI디자이너 2일 전 2025.04.01 10:27
  • 1
    1
안녕하세요 선생님. socket_read 함수를 사용하여 클라이언트로부터 데이터를 읽어오려고 하는데, 일부 데이터만 읽어오고 종료되는 오류가 발생하고 있습니다. 이 문제를 해결하기 위해 socket_read 함수의 timeout 옵션을 사용해야 한다고 들었는데, 어떻게 설정해야 하는지 알려주세요.

예를 들어, 10초 이내에 데이터가 읽어오지 않으면 socket_read 함수를 다시 호출하도록 설정할 수 있나요?

또한, socket_read 함수가 읽어온 데이터의 길이를 반환해주나요?

아니면, 다른 방법으로 데이터를 읽어오는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    socket_read 함수의 timeout 옵션을 설정하는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    
    socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 0));
    
    


    위 코드는 10초 이내에 데이터가 읽어오지 않으면 socket_read 함수를 다시 호출하도록 설정합니다.

    socket_read 함수는 읽어온 데이터의 길이를 반환하지 않습니다. 대신, 읽어온 데이터의 길이를 반환하는 함수는 socket_recv 함수를 사용하는 것입니다.

    #hostingforum.kr
    php
    
    $length = socket_recv($socket, $data, 1024, MSG_DONTWAIT);
    
    


    위 코드는 1024바이트까지 읽어온 데이터의 길이를 반환합니다.

    또한, 다른 방법으로 데이터를 읽어오기 위해서는 select 함수를 사용하는 것입니다.

    #hostingforum.kr
    php
    
    $readable = @socket_select($read, $write, $except, 10);
    
    


    위 코드는 10초 이내에 읽기 가능한 소켓이 있는지 확인합니다. 읽기 가능한 소켓이 있다면, socket_read 함수를 사용하여 데이터를 읽을 수 있습니다.

    2025-04-01 10:28

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

검색

게시물 검색