PHP Streams函数

PHP stream_socket_recvfrom() 函数用于从远程套接字接收最多length长度的数据字节。

语法

stream_socket_recvfrom(socket, length, flags, address) 

参数

socket必需。 指定远程套接字。
length必需。 指定从套接字接收的字节数。
flags可选。 标志的值可以是以下任意组合:
  • STREAM_OOB - 处理 OOB(带外)数据。
  • STREAM_PEEK - 从套接字检索数据,但不消耗缓冲区。后续调用 fread()stream_socket_recvfrom() 将看到相同的数据。
address可选。 如果提供了地址,它将填充远程套接字的地址。

返回值

以字符串形式返回读取的数据

示例:stream_socket_recvfrom() 示例

下面的示例显示了stream_socket_recvfrom() 的用法功能。

<?php
//在本地主机上打开一个到端口 1234 的服务器套接字
$server = stream_socket_server('tcp://127.0.0.1:1234');

//接受连接
$socket = stream_socket_accept($server);

//接受OOB数据包(1500是典型的MTU大小)
echo "Received Out-Of-Band: '"
     .stream_socket_recvfrom($socket, 1500, STREAM_OOB)."'\n";

//显示正常的带内数据,但不消耗它
echo "Data: '".stream_socket_recvfrom($socket, 1500, STREAM_PEEK)."'\n";

//再次获取完全相同的数据包,
//但这次将其从缓冲区中删除
echo "Data: '".stream_socket_recvfrom($socket, 1500)."'\n";

//关闭它
fclose($socket);
fclose($server);
?>