💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
### 1.**服务端代码** 创建一个 TCP 服务端,监听指定端口并处理客户端连接和消息。 ``` use Workerman\Worker; use Workerman\Connection\TcpConnection; require_once __DIR__ . '/vendor/autoload.php'; // 创建一个 Worker,时时监听 2347 端口(new Worker的过程中会调用一个listen方法) $worker = new Worker('tcp://0.0.0.0:2347'); // 设置进程数 $worker->count = 4; // 当客户端连接时 $worker->onConnect = function (TcpConnection $connection) { echo "新的链接: {$connection->getRemoteIp()}:{$connection->getRemotePort()}\n"; $connection->send("欢迎来到服务端!\n"); }; // 当客户端发送消息时 $worker->onMessage = function (TcpConnection $connection, $data) { echo "Received from client: $data"; $connection->send("服务器已收到: $data"); }; // 当客户端断开连接时 $worker->onClose = function (TcpConnection $connection) { echo "Connection closed: {$connection->getRemoteIp()}:{$connection->getRemotePort()}\n"; }; // 运行 Worker Worker::runAll(); ``` static::init(); static::parseCommand(); static::lock(); static::daemonize(); static::initWorkers(); static::installSignal(); static::saveMasterPid(); static::lock(\LOCK_UN); static::displayUI(); static::forkWorkers(); static::resetStd(); static::monitorWorkers(); ### 2.**客户端代码** 创建一个 TCP 客户端,连接到服务端并发送消息。 ``` use Workerman\Worker; use Workerman\Connection\AsyncTcpConnection; require_once __DIR__ . '/vendor/autoload.php'; // 创建一个 Worker(客户端不需要监听端口) $worker = new Worker(); // 当 Worker 启动时 $worker->onWorkerStart = function () { // 创建一个异步 TCP 连接 $connection = new AsyncTcpConnection('tcp://127.0.0.1:2347'); // 当连接成功时 $connection->onConnect = function (AsyncTcpConnection $connection) { echo "Connected to server\n"; // 发送消息到服务端 $connection->send("Hello from client!"); }; // 当收到服务端消息时 $connection->onMessage = function (AsyncTcpConnection $connection, $data) { echo "Received from server: $data"; }; // 当连接关闭时 $connection->onClose = function (AsyncTcpConnection $connection) { echo "Connection closed\n"; }; // 当连接失败时 $connection->onError = function (AsyncTcpConnection $connection, $code, $msg) { echo "Connection error: $msg\n"; }; // 发起连接 $connection->connect(); }; // 运行 Worker Worker::runAll(); ```