当前位置:首页 > PHP

php实现tcp

2026-02-28 10:13:22PHP

PHP 实现 TCP 通信

PHP 可以通过 socket 扩展或 stream 函数实现 TCP 通信。以下是两种方法的详细说明:

使用 socket 扩展实现 TCP 服务器

创建 TCP 服务器需要监听指定端口并处理客户端连接:

php实现tcp

$host = '0.0.0.0';
$port = 8080;

// 创建 socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);

echo "Server listening on $host:$port\n";

while (true) {
    $client = socket_accept($socket);
    $message = socket_read($client, 1024);
    echo "Received: $message\n";

    $response = "Hello, Client!";
    socket_write($client, $response, strlen($response));
    socket_close($client);
}

socket_close($socket);

使用 socket 扩展实现 TCP 客户端

客户端需要连接到服务器并发送数据:

$host = '127.0.0.1';
$port = 8080;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $host, $port);

$message = "Hello, Server!";
socket_write($socket, $message, strlen($message));

$response = socket_read($socket, 1024);
echo "Server response: $response\n";

socket_close($socket);

使用 stream 函数实现 TCP 服务器

PHP 的 stream_socket_serverstream_socket_accept 也可以实现 TCP 通信:

php实现tcp

$host = '0.0.0.0';
$port = 8080;

$server = stream_socket_server("tcp://$host:$port", $errno, $errstr);
if (!$server) {
    die("Error: $errstr ($errno)");
}

echo "Server listening on $host:$port\n";

while ($client = stream_socket_accept($server)) {
    $data = fread($client, 1024);
    echo "Received: $data\n";

    fwrite($client, "Hello, Client!");
    fclose($client);
}

fclose($server);

使用 stream 函数实现 TCP 客户端

客户端可以使用 stream_socket_client 连接服务器:

$host = '127.0.0.1';
$port = 8080;

$client = stream_socket_client("tcp://$host:$port", $errno, $errstr);
if (!$client) {
    die("Error: $errstr ($errno)");
}

fwrite($client, "Hello, Server!");
$response = fread($client, 1024);
echo "Server response: $response\n";

fclose($client);

注意事项

  • 确保 PHP 安装时启用了 socket 扩展(默认已启用)。
  • 服务器和客户端需要运行在同一网络或可访问的 IP 上。
  • 处理多客户端连接时,建议使用多线程或异步 I/O(如 stream_select)。
  • 生产环境中应加入错误处理和超时机制。

示例:多客户端处理

使用 stream_select 处理多个客户端连接:

$host = '0.0.0.0';
$port = 8080;

$server = stream_socket_server("tcp://$host:$port");
$clients = [$server];

while (true) {
    $read = $clients;
    if (stream_select($read, $write, $except, 0) > 0) {
        if (in_array($server, $read)) {
            $client = stream_socket_accept($server);
            $clients[] = $client;
            unset($read[array_search($server, $read)]);
        }

        foreach ($read as $client) {
            $data = fread($client, 1024);
            if ($data === false || $data === '') {
                fclose($client);
                unset($clients[array_search($client, $clients)]);
                continue;
            }
            echo "Received: $data\n";
            fwrite($client, "ACK: $data");
        }
    }
}

以上方法提供了 PHP 实现 TCP 通信的基本框架,可根据实际需求扩展功能。

标签: phptcp
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Rat…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query…