当前位置:首页 > PHP

php 实现 tcp

2026-02-14 18:12:47PHP

PHP 实现 TCP 通信

PHP 可以通过 socket 扩展实现 TCP 通信,包括创建 TCP 服务器和客户端。以下是具体实现方法。

创建 TCP 服务器

  1. 创建 Socket 并绑定端口

    $host = '0.0.0.0';
    $port = 8080;
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_bind($socket, $host, $port);
    socket_listen($socket);
  2. 接受客户端连接

    $client = socket_accept($socket);
    $message = "Welcome to TCP Server!\n";
    socket_write($client, $message, strlen($message));
  3. 处理客户端数据

    php 实现 tcp

    while (true) {
        $data = socket_read($client, 1024);
        if (trim($data) === 'exit') {
            break;
        }
        echo "Received: " . $data;
        socket_write($client, "Server: " . $data, strlen($data) + 8);
    }
  4. 关闭连接

    socket_close($client);
    socket_close($socket);

创建 TCP 客户端

  1. 连接服务器

    $host = '127.0.0.1';
    $port = 8080;
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_connect($socket, $host, $port);
  2. 发送和接收数据

    php 实现 tcp

    $message = "Hello Server!\n";
    socket_write($socket, $message, strlen($message));
    $response = socket_read($socket, 1024);
    echo "Server Response: " . $response;
  3. 关闭连接

    socket_close($socket);

注意事项

  • 确保 PHP 已启用 socket 扩展(检查 php.iniextension=sockets 是否取消注释)。
  • 服务器和客户端需在同一网络或配置正确的 IP 和端口。
  • 多客户端处理需结合 socket_select 或多进程/多线程实现。

示例代码整合

TCP 服务器完整示例

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 8080);
socket_listen($socket);

$client = socket_accept($socket);
socket_write($client, "Connected.\n", 11);

while (true) {
    $data = socket_read($client, 1024);
    if (trim($data) === 'exit') break;
    echo "Client: " . $data;
    socket_write($client, "Server: " . $data, strlen($data) + 8);
}

socket_close($client);
socket_close($socket);

TCP 客户端完整示例

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, '127.0.0.1', 8080);

$response = socket_read($socket, 1024);
echo $response;

socket_write($socket, "Hello Server!\n", 14);
$response = socket_read($socket, 1024);
echo $response;

socket_write($socket, "exit\n", 5);
socket_close($socket);

通过以上方法,可以实现基本的 TCP 通信功能。如需高并发或更复杂场景,建议结合事件循环库(如 libevent)或使用 Swoole 等高性能框架。

标签: phptcp
分享给朋友:

相关文章

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (flock…

php实现异步图片上传

php实现异步图片上传

异步图片上传的实现方法 在PHP中实现异步图片上传通常需要结合前端JavaScript和后端PHP代码。以下是几种常见的方法: 使用XMLHttpRequest或Fetch API 前端使用Java…

php 插件实现

php 插件实现

PHP 插件实现方法 PHP 插件可以通过多种方式实现,具体取决于插件的用途和功能需求。以下是一些常见的实现方法: 使用钩子(Hooks)和过滤器(Filters) 钩子和过滤器是一种常见的插件架…

php 实现长轮询

php 实现长轮询

PHP 实现长轮询的方法 长轮询(Long Polling)是一种服务器推送技术,客户端发送请求后,服务器保持连接开放直到有新数据或超时。以下是实现步骤: 基础实现代码 创建一个简单的长轮询 PHP…