当前位置:首页 > PHP

php 实现 tcp

2026-03-12 16:41:59PHP

PHP 实现 TCP 通信的方法

PHP 可以通过多种方式实现 TCP 通信,以下是常见的几种方法:

使用 socket 扩展

PHP 内置的 socket 扩展可以创建 TCP 服务器和客户端。以下是一个简单的 TCP 服务器和客户端示例:

TCP 服务器端代码

<?php
$host = '127.0.0.1';
$port = 12345;

$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";
    socket_write($client, "Message received");
    socket_close($client);
}

socket_close($socket);
?>

TCP 客户端代码

<?php
$host = '127.0.0.1';
$port = 12345;

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

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

socket_close($socket);
?>

使用 stream_socket 函数

PHP 的流函数也支持 TCP 通信,以下是使用流函数的示例:

php 实现 tcp

TCP 服务器端

<?php
$host = '127.0.0.1';
$port = 12345;

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

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

while ($conn = stream_socket_accept($server)) {
    $data = fread($conn, 1024);
    echo "Received: $data\n";
    fwrite($conn, "Message received");
    fclose($conn);
}

fclose($server);
?>

TCP 客户端

<?php
$host = '127.0.0.1';
$port = 12345;

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

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

fclose($fp);
?>

使用 ReactPHP 库

对于更复杂的 TCP 应用,可以使用 ReactPHP 库,它提供了事件驱动的编程模型:

php 实现 tcp

安装 ReactPHP

composer require react/socket

TCP 服务器示例

<?php
require 'vendor/autoload.php';

$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server('127.0.0.1:12345', $loop);

$socket->on('connection', function (React\Socket\ConnectionInterface $connection) {
    echo "New connection\n";

    $connection->on('data', function ($data) use ($connection) {
        echo "Received: $data\n";
        $connection->write("Message received");
    });

    $connection->on('close', function () {
        echo "Connection closed\n";
    });
});

echo "Server listening on 127.0.0.1:12345\n";
$loop->run();
?>

TCP 客户端示例

<?php
require 'vendor/autoload.php';

$loop = React\EventLoop\Factory::create();
$connector = new React\Socket\Connector($loop);

$connector->connect('127.0.0.1:12345')->then(function (React\Socket\ConnectionInterface $connection) {
    $connection->write("Hello Server");

    $connection->on('data', function ($data) {
        echo "Server response: $data\n";
    });
});

$loop->run();
?>

注意事项

  • 确保 PHP 安装时启用了 socket 扩展(通常在 php.ini 中取消注释 extension=sockets
  • 防火墙设置可能需要调整以允许 TCP 连接
  • 对于生产环境,需要考虑错误处理、超时设置和并发连接管理
  • 长时间运行的服务器脚本需要使用 set_time_limit(0) 或类似方法避免超时

以上方法提供了从基础到高级的 TCP 通信实现方式,可根据项目需求选择合适的方案。

标签: phptcp
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…

php 实现跳转

php 实现跳转

PHP 实现页面跳转的方法 在PHP中,实现页面跳转可以通过多种方式完成,以下是几种常用的方法: 使用header函数 header函数是PHP中最常用的跳转方法,通过发送HTTP头部信息实现跳转。…