Streams stream_socket_recvfrom

(PHP 5, PHP 7, PHP 8)

stream_socket_recvfrom — 연결 여부에 관계없이 소켓에서 데이터 수신


설명

stream_socket_recvfrom(
    resource $socket,
    int $length,
    int $flags = 0,
    ?string &$address = null
): string|false
                

stream_socket_recvfrom()은 원격 소켓의 데이터를 length 바이트까지 받아들입니다.


매개변수

socket
원격 소켓입니다.
length
socket에서 수신할 바이트 수입니다.
flags
flags 값은 다음 조합일 수 있습니다.

flags에 가능한 값

STREAM_OOB OOB(out-of-band) 데이터를 처리합니다.
STREAM_PEEK 소켓에서 데이터를 검색하지만 버퍼를 사용하지 마십시오. fread() 또는 stream_socket_recvfrom()에 대한 후속 호출은 동일한 데이터를 보게 됩니다.
address
address가 제공되면 원격 소켓의 주소로 채워집니다.

반환 값

읽은 데이터를 문자열로 반환하거나 실패 시 false를 반환합니다.


Examples

예제 #1 stream_socket_recvfrom() 예제

                  
<?php
/* Open a server socket to port 1234 on localhost */
$server = stream_socket_server('tcp://127.0.0.1:1234');

/* Accept a connection */
$socket = stream_socket_accept($server);

/* Grab a packet (1500 is a typical MTU size) of OOB data */
echo "Received Out-Of-Band: '" . stream_socket_recvfrom($socket, 1500, STREAM_OOB) . "'\n";

/* Take a peek at the normal in-band data, but don't consume it. */
echo "Data: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";

/* Get the exact same packet again, but remove it from the buffer this time. */
echo "Data: '" . stream_socket_recvfrom($socket, 1500) . "'\n";

/* Close it up */
fclose($socket);
fclose($server);
?>
                  
                

메모

메모: 수신된 메시지가 length 매개변수보다 길면 메시지를 수신한 소켓 유형(예: UDP)에 따라 초과 바이트가 폐기될 수 있습니다.

메모: 버퍼 기반 스트림 함수(예: fread() 또는 stream_get_line())에 대한 호출이 소켓에서 직접 데이터를 읽고 스트림 버퍼를 우회한 후 소켓 기반 스트림에서 stream_socket_recvfrom()을 호출합니다.


기타