七、Swoole 基础学习笔记 - 学习 Swoole Tcp Client 客户端并连接服务端

作者: 温新

分类: 【Swoole 系列】

阅读: 866

时间: 2023-02-14 15:36:06

hi,我是温新,一名PHPer

文章基于 Swoole 5.0 版本编写。

**学习目标:学习 Swoole Tcp/Udp Client 的使用 **

说明:本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!

Swoole\Client 客户端,提供了 TCP/UDPsocket 的客户端的封装代码,使用时仅需 new Swoole\Client 即可。可用于 FPM/Apache 环境。

快速体验客户端

创建服务端

<?php
// 4-swoole-server.php
    
$server = new Swoole\Server('0.0.0.0', 9501, SWOOLE_PROCESS);

$server->on('Receive', function ($server, $fd, $fromId, $data) {
	$server->send($fd, '服务器返回:' . $data) . PHP_EOL;
});

$server->start();

创建客户端

<?php
// 4-swoole-client-1.php

// 实例化客户端
$client = new Swoole\Client(SWOOLE_SOCK_TCP);

// 连接服务端
if (!$client->connect('127.0.0.1', 9501, -1)) {
	exit('connect failed. Error:' . $client->errCode . PHP_EOL);
}

// 发送消息给服务端
$client->send('I am Swoole Client');
// 接收服务端返回的消息
echo $client->recv();

// 关闭客户端
$client->close();

Client 相关属性、方法

Client 配置

配置 SSL

$client->set([
    'ssl_cert_file' => $your_ssl_cert_file_path,
    'ssl_key_file' => $your_ssl_key_file_path,
]);

Client 方法

__construct(int $sock_type, int $is_sync = SWOOLE_SOCK_SYNC, string $key);

作用:构造方法,用于实例化客户端。

set(array $settings);

作用:设置客户端参数,必须在 connect 前执行。

connect(string $host, int $port, float $timeout = 0.5, int $sock_flag = 0): bool

作用:接到远程服务器。

send(string $data)

作用:发送数据到远程服务器,必须在建立连接后,才可向对端发送数据。

sendfile(string $filename, int $offset = 0, int $length = 0): bool

作用:发送文件到服务器,本函数是基于 sendfile 操作系统调用实现。

recv(int $size = 65535, int $flags = 0): string | false

作用:从服务器端接收数据。

close(bool $force = false): bool

作用:关闭连接。

Client 属性

errCode

作用:错误码。

sock

作用:socket 连接的文件描述符。

reuse

作用:表示此连接是新创建的还是复用已存在的。

常量

SWOOLE_KEEP

作用:Swoole\Client 支持在 PHP-FPM/Apache 中创建一个 TCP 长连接到服务器端。

本篇文章至此就结束了,我是温新,我们下一篇文章见。

请登录后再评论