当前位置: 首页> 函数类别大全> stream_socket_recvfrom

stream_socket_recvfrom

从连接或非连接的套接字接收数据
名称:stream_socket_recvfrom
分类:Stream
所属语言:php
一句话介绍: 从套接字接收数据,并返回接收到的数据

函数名称:stream_socket_recvfrom()

函数描述:stream_socket_recvfrom() 函数从套接字接收数据,并返回接收到的数据。

适用版本:PHP 5 >= 5.3.0, PHP 7

语法:stream_socket_recvfrom ( resource $socket , int $length [, int $flags = 0 [, string &$address ]] ) : string|false

参数:

  • $socket:必需,表示一个打开的套接字资源,可以通过 stream_socket_client() 或 stream_socket_server() 函数创建。
  • $length:必需,表示要接收的数据的最大长度。
  • $flags:可选,用于指定接收数据时的额外选项。
  • $address:可选,用于存储发送方的 IP 地址和端口号。

返回值:成功时返回接收到的数据,失败时返回 false。

示例:

  1. 接收数据并打印:

$socket = stream_socket_client("udp://127.0.0.1:1234", $errno, $errstr); if (!$socket) { echo "连接失败:$errstr ($errno)"; } else { $data = stream_socket_recvfrom($socket, 1024); echo "接收到的数据:$data"; fclose($socket); }

  1. 接收数据并获取发送方的 IP 地址和端口号:

$socket = stream_socket_server("udp://127.0.0.1:1234", $errno, $errstr, STREAM_SERVER_BIND); if (!$socket) { echo "启动服务器失败:$errstr ($errno)"; } else { $client = stream_socket_accept($socket); $data = stream_socket_recvfrom($client, 1024, 0, $address); echo "接收到的数据:$data"; echo "发送方地址:$address"; fclose($client); fclose($socket); }

注意事项:

  • stream_socket_recvfrom() 函数仅适用于支持流套接字的传输协议(如 TCP、UDP)。
  • 在使用 UDP 协议时,需要在创建套接字时指定 "udp://" 协议前缀。
  • 如果指定了 $address 参数,则函数会将发送方的 IP 地址和端口号存储在该变量中。
  • $length 参数指定的是要接收的数据的最大长度,如果实际接收到的数据长度超过该值,则只会返回部分数据。
  • $flags 参数可以用于指定接收数据时的选项,常用的选项有 MSG_WAITALL(等待直到接收到指定长度的数据)和 MSG_DONTWAIT(非阻塞模式)等。
  • 在接收数据之前,需要先创建一个套接字资源,可以使用 stream_socket_client() 或 stream_socket_server() 函数来创建。
同类函数
热门文章