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

socket_recvfrom

从套接字接收数据,无论它是否是面向连接的
名称:socket_recvfrom
分类:套接字Sockets
所属语言:php
一句话介绍: 从指定的套接字接收数据,并将发送方的地址和端口存储在指定的变量中

函数名:socket_recvfrom() 

适用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7

函数说明:socket_recvfrom() 函数从指定的套接字接收数据,并将发送方的地址和端口存储在指定的变量中。

语法:int socket_recvfrom ( resource $socket , string &$buf , int $len , int $flags , string &$name [, int &$port ] )

参数说明:

  • $socket:必需,指定的套接字资源。
  • $buf:必需,用于存储接收到的数据的变量。
  • $len:必需,指定要接收的最大字节数。
  • $flags:可选,指定接收数据的标志,默认为0。
  • $name:必需,用于存储发送方地址的变量。
  • $port:可选,用于存储发送方端口的变量,默认为0。

返回值:成功时返回接收到的字节数,失败时返回FALSE。

示例代码:

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($socket === false) {
    echo "socket_create() failed: " . socket_strerror(socket_last_error()) . "\n";
    exit;
}

$bind = socket_bind($socket, '0.0.0.0', 8888);
if ($bind === false) {
    echo "socket_bind() failed: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

$buffer = '';
$senderAddress = '';
$senderPort = 0;

// 接收数据并获取发送方的地址和端口
$bytes = socket_recvfrom($socket, $buffer, 1024, 0, $senderAddress, $senderPort);
if ($bytes === false) {
    echo "socket_recvfrom() failed: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

echo "Received $bytes bytes from $senderAddress:$senderPort\n";
echo "Data: $buffer\n";

socket_close($socket);

以上示例代码创建了一个UDP套接字,并绑定到本地的8888端口。然后使用socket_recvfrom()函数接收数据,将发送方的地址和端口存储在相应的变量中。最后输出接收到的数据、发送方的地址和端口,并关闭套接字。

注意:示例中使用的是UDP套接字,如果需要使用TCP套接字,则需要使用socket_recv()函数来接收数据。

同类函数
热门文章