initphp / socket
Socket 服务器-客户端库
1.0
2022-03-18 07:02 UTC
Requires
- php: >=7.4
- ext-sockets: *
This package is auto-updated.
Last update: 2024-09-16 18:20:02 UTC
README
PHP Socket (TCP, TLS, UDP, SSL) 服务器/客户端库
要求
- PHP 7.4 或更高版本
- PHP Sockets 扩展
安装
composer require initphp/socket
使用方法
支持的类型
- TCP
- UDP
- TLS
- SSL
工厂
\InitPHP\Socket\Socket::class
允许您轻松创建 socket 服务器或客户端。
Socket::server()
public static function server(int $handler = Socket::TCP, string $host = '', int $port = 0, null|string|float $argument = null): \InitPHP\Socket\Interfaces\SocketServerInterface
$handler
:Socket::SSL
,Socket::TCP
,Socket::TLS
或Socket::UDP
$host
: 识别 socket 主机。如果未定义或留空,将抛出错误。$port
: 识别 socket 端口。如果未定义或留空,将抛出错误。$argument
: 此值将作为 3 个参数发送到处理器构造函数。- SSL 或 TLS = (float) 定义超时时间。
- UDP 或 TCP = (string) 定义 socket 使用的协议族。 "v4", "v6" 或 "unix"
Socket::client()
public static function client(int $handler = self::TCP, string $host = '', int $port = 0, null|string|float $argument = null): \InitPHP\Socket\Interfaces\SocketClientInterface
$handler
:Socket::SSL
,Socket::TCP
,Socket::TLS
或Socket::UDP
$host
: 识别 socket 主机。如果未定义或留空,将抛出错误。$port
: 识别 socket 端口。如果未定义或留空,将抛出错误。$argument
: 此值将作为 3 个参数发送到处理器构造函数。- SSL 或 TLS = (float) 定义超时时间。
- UDP 或 TCP = (string) 定义 socket 使用的协议族。 "v4", "v6" 或 "unix"
方法
connection()
: 初始化 socket 连接。
public function connection(): self;
disconnect()
: 终止连接。
public function disconnect(): bool;
read()
: 从 socket 读取数据。
public function read(int $length = 1024): ?string;
write()
: 将数据写入 socket
public function write(string $string): ?int;
服务器方法
live()
:
public function live(callable $callback): void;
wait()
:
public function wait(int $second): void;
TLS 和 SSL 的特殊方法。
TLS 和 SSL 工作方式类似。
您可以从 TLS 和 SSL 套接字使用一些附加方法。
timeout()
: 定义当前的超时时间。
public function timeout(int $second): self;
blocking()
: 设置当前的模式。
public function blocking(bool $mode = true): self;
crypto()
: 在连接的 socket 上打开或关闭加密。
public function crypto(?string $method = null): self;
$method
的可能值有;
- "sslv2"
- "sslv3"
- "sslv23"
- "any"
- "tls"
- "tlsv1.0"
- "tlsv1.1"
- "tlsv1.2"
- NULL
option()
: 定义 SSL 和 TLS 的连接选项。见:https://php.ac.cn/manual/en/context.ssl.php
public function option(string $key, mixed $value): self;
Socket 服务器
示例
require_once "../vendor/autoload.php"; use \InitPHP\Socket\Socket; use \InitPHP\Socket\Interfaces\SocketServerInterface; $server = Socket::server(Socket::TLS, '127.0.0.1', 8080); $server->connection(); $server->live(function (SocketServerInterface $socket) { switch ($socket->read()) { case 'exit' : $socket->write('Goodbye!'); return; case 'write' : $socket->write('Run write command.'); break; case 'read' : $socket->write('Run read command.'); break; default: return; } });
Socket 客户端
示例
require_once "../vendor/autoload.php"; use \InitPHP\Socket\Socket; $client = Socket::client(Socket::SSL, 'smtp.gmail.com', 465); $client->option('verify_peer', false) ->option('verify_peer_name', false); $client->connection(); $client->write('EHLO [127.0.0.1]'); echo $client->read();
在上面的示例中,创建了一个简单的 smtp 连接到 gmail。
致谢
许可
版权 © 2022 MIT 许可证