stream_socket_recvfrom
stream_socket_recvfrom
(PHP 5, PHP 7)
stream_socket_recvfrom - 从套接字接收数据,连接与否
描述
string stream_socket_recvfrom ( resource $socket , int $length [, int $flags = 0 [, string &$address ]] )
stream_socket_recvfrom()
接收来自远程套接字的数据,最多为length
字节。
参数
socket
远程套接字。
length
从接收的字节数socket
。
flags
flags
值可以是以下任意组合:
STREAM_OOB | 处理OOB(带外)数据。 |
---|---|
STREAM_PEEK | 从套接字中检索数据,但不消耗缓冲区。随后调用fread()或stream_socket_recvfrom()将看到相同的数据。 |
address
如果address
提供,它将填充远程套接字的地址。
返回值
以字符串形式返回读取的数据
示例
示例#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 comsume 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() - 打开Internet或Unix域套接字连接
- stream_socket_server() - 创建一个Internet或Unix域服务器套接字
← stream_socket_pair
stream_socket_sendto →