首页
学习
活动
专区
工具
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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com