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()을 호출합니다.
기타
- stream_socket_sendto() - 연결 여부에 관계없이 소켓에 메시지를 보냅니다.
- stream_socket_client() - 인터넷 또는 Unix 도메인 소켓 연결 열기
- stream_socket_server() - 인터넷 또는 Unix 도메인 서버 소켓 만들기