개발자 Q&A

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

2025.07.22 22:55

stream_socket_recvfrom 함수에 대해 질문입니다

목록
  • 데이터베이스귀신 9시간 전 2025.07.22 22:55 새글
  • 7
    1
저는 stream_socket_recvfrom 함수를 사용하여 TCP 소켓에서 데이터를 수신할 때 어려움을 겪고 있습니다.
stream_socket_recvfrom 함수의 두 번째 인자인 $address를 어떤 형식으로 사용해야 하는지 정확히 모르겠습니다.
예를 들어, $address는 IP 주소와 포트 번호를 모두 포함해야 하나요? 아니면 IP 주소만 포함해야 하나요?
또한, $address를 사용하여 데이터를 수신할 때, 소켓의 데이터가 다른 IP 주소나 포트 번호로 전송되는 경우는 어떻게 처리해야 하나요?

    댓글목록

    profile_image
    나우호스팅  9시간 전



    stream_socket_recvfrom 함수의 두 번째 인자인 $address는 IP 주소와 포트 번호를 모두 포함하는 형식으로 사용해야 합니다. 예를 들어, '192.168.1.100:8080'과 같은 형식으로 사용할 수 있습니다.

    $address를 사용하여 데이터를 수신할 때, 소켓의 데이터가 다른 IP 주소나 포트 번호로 전송되는 경우는 다음과 같이 처리할 수 있습니다.

    1. $address를 사용하여 데이터를 수신할 때, 소켓의 데이터가 다른 IP 주소나 포트 번호로 전송되는 경우, stream_socket_recvfrom 함수는 데이터를 수신하지 못하고 FALSE를 반환합니다.
    2. FALSE를 반환하는 경우, 소켓의 데이터가 다른 IP 주소나 포트 번호로 전송된 경우를 처리하기 위해, stream_socket_recvfrom 함수의 세 번째 인자인 $outgoing_ip와 $outgoing_port를 사용하여 데이터를 수신할 수 있습니다. 예를 들어, '0.0.0.0'과 ':0'과 같은 형식으로 사용할 수 있습니다.

    예제 코드:

    #hostingforum.kr
    php
    
    $sock = stream_socket_server('tcp://0.0.0.0:8080', $errno, $errstr);
    
    
    
    if (!$sock) {
    
        die("소켓 생성 실패: $errstr ($errno)n");
    
    }
    
    
    
    while (true) {
    
        $address = '';
    
        $data = stream_socket_recvfrom($sock, $data, 1024, 0, $address);
    
    
    
        if ($data === false) {
    
            break;
    
        }
    
    
    
        echo "수신된 데이터: $datan";
    
        echo "수신된 주소: $addressn";
    
    }
    
    


    이 예제 코드에서는 stream_socket_recvfrom 함수의 두 번째 인자인 $address를 사용하여 데이터를 수신하고, 수신된 데이터와 주소를 출력합니다.

    2025-07-22 22:56

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

검색

게시물 검색