首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

stream_socket_recvfrom

(PHP 5, PHP 7)

stream_socket_recvfrom - 从套接字接收数据,连接与否

描述

代码语言:javascript
复制
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()示例

代码语言:javascript
复制
<?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 →

扫码关注腾讯云开发者

领取腾讯云代金券