Swoole提供同步和异步TCP客户端,同步方式更直观,适合初学者。使用Swoole\Client连接服务端并发送消息,配合Swoole\Server测试通信,异步模式通过事件回调处理非阻塞操作,适用于高并发场景,建议检查连接返回值及错误码。

Swoole 提供了异步和同步两种方式来实现 TCP 客户端。对于初学者来说,使用同步客户端更直观、易于理解。下面介绍如何用 Swoole 实现一个简单的 TCP 客户端,并与服务端进行基本通信。
同步客户端的使用方式类似于 PHP 原生的 socket 编程,但更简洁。以下是一个连接到 TCP 服务端并发送消息的例子:
$client = new Swoole\Client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 9501, 1)) {
    echo "连接失败: {$client->errCode}\n";
    exit;
}
echo "已连接到服务器\n";
// 发送数据
$client->send("Hello Swoole Server!");
// 接收返回数据
$response = $client->recv();
echo "收到回复: {$response}\n";
// 关闭连接
$client->close();
为了测试上面的客户端,可以启动一个 Swoole TCP 服务端:
$server = new Swoole\Server('127.0.0.1', 9501);
$server->on('connect', function ($serv, $fd) {
    echo "客户端 {$fd} 已连接\n";
});
$server->on('receive', function ($serv, $fd, $reactorId, $data) {
    echo "收到数据: {$data}";
    $serv->send($fd, "你好,客户端!\n");
});
$server->on('close', function ($serv, $fd) {
    echo "客户端 {$fd} 已断开\n";
});
$server->start();
先运行服务端(php server.php),再运行客户端脚本,即可看到通信过程。
如果需要非阻塞操作,可以使用异步模式。异步客户端通过事件回调处理连接、接收和关闭:
$client = new Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on('connect', function ($cli) {
    echo "已连接到服务端\n";
    $cli->send("异步消息:Hello Server!");
});
$client->on('receive', function ($cli, $data) {
    echo "收到回复: {$data}\n";
    $cli->close();
});
$client->on('error', function ($cli) {
    echo "连接出错\n";
});
$client->on('close', function ($cli) {
    echo "连接已关闭\n";
});
$client->connect('127.0.0.1', 9501, 1);
注意:异步客户端不能在 CLI 下直接运行于某些环境,需确保 Swoole 扩展正常加载且运行在支持的环境下。
基本上就这些。使用 Swoole 的 Swoole\Client 类可以快速构建 TCP 客户端,同步方式适合调试和简单任务,异步更适合高并发场景。不复杂但容易忽略的是错误码和超时设置,建议每次连接都检查 connect 返回值并处理 errCode。
以上就是Swoole如何实现一个简单的TCP客户端的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号