Current Location: Home> Latest Articles>

gitbox 2025-06-17

socket_read 函数

适用 PHP 版本:PHP 4 及以上版本

函数说明

socket_read 函数用于从一个已经建立的 socket 连接中读取数据。这个函数通常与 socket_create、socket_connect 等函数一起使用,用于网络通信中从远程主机读取数据。

函数语法

string socket_read ( resource $socket , int $length , int $type )

参数

  • $socket (必需):一个通过 socket_create 或 socket_accept 创建的有效 socket 资源。
  • $length (必需):指定要读取的字节数。这个值决定了每次读取的最大数据量。
  • $type (可选):这个参数决定读取方式。它的取值可以是以下之一:
    • PHP_NORMAL_READ:表示正常读取,直到读取到指定字节数或遇到换行符(默认)。
    • PHP_BINARY_READ:表示以二进制模式读取数据,直到读取到指定字节数。

返回值

成功时,返回从 socket 读取的字符串数据;如果发生错误或没有更多数据可读取,则返回 FALSE。

示例

<?php
// 创建 socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "Socket 创建失败: " . socket_strerror(socket_last_error()) . "\n";
} else {
    // 连接到远程主机
    $result = socket_connect($socket, '127.0.0.1', 8080);
    if ($result === false) {
        echo "连接失败: " . socket_strerror(socket_last_error($socket)) . "\n";
    } else {
        // 读取数据
        $data = socket_read($socket, 1024, PHP_NORMAL_READ);
        if ($data === false) {
            echo "读取失败: " . socket_strerror(socket_last_error($socket)) . "\n";
        } else {
            echo "接收到的数据: $data\n";
        }
    }
    // 关闭 socket
    socket_close($socket);
}
?>
  

示例代码的说明

在上述示例代码中,首先创建了一个 TCP socket 连接,并使用 socket_connect 函数连接到本地的 8080 端口。接着,使用 socket_read 函数读取最多 1024 字节的数据。如果读取成功,打印接收到的数据,否则打印错误信息。最后,关闭 socket 连接。