You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.1 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
/**
* TCP服务端类
* User: fantasticbin
* Date: 2020/1/15
*/
class Tcp
{
const HOST = '127.0.0.1';
const PORT = 9502;
const WORKER_NUM = 2;
const MAX_REQUEST = 10000;
public $server = null;
public function __construct()
{
// 创建TCP服务器第四个参数默认指定为TCP监听 127.0.0.1:9501 端口
$this->server = new Swoole\Server(self::HOST, self::PORT);
// 设置TCP服务器参数
$this->server->set([
'worker_num' => self::WORKER_NUM,
'max_request' => self::MAX_REQUEST
]);
// 监听连接进入事件
$this->server->on('Connect', [$this, 'onConnect']);
// 监听数据接收事件
$this->server->on('Receive', [$this, 'onReceive']);
// 监听连接关闭事件
$this->server->on('Close', [$this, 'onClose']);
}
/**
* 监听连接进入事件
* @param $serv Swoole\Server TCP对象
* @param $client_id int 客户端连接ID
* @param $reactor_id int 线程ID
*/
public function onConnect($serv, $client_id, $reactor_id)
{
echo 'Client: Connect.' . PHP_EOL . 'This client id: ' . $client_id . PHP_EOL . 'This reactor id: ' . $reactor_id . PHP_EOL;
}
/**
* 监听数据接收事件
* @param $serv Swoole\Server TCP对象
* @param $client_id int 客户端连接ID
* @param $reactor_id int 线程ID
* @param $data string 客户端传入的字符串
*/
public function onReceive($serv, $client_id, $reactor_id, $data)
{
$serv->send($client_id, 'This client id: ' . $client_id . PHP_EOL . 'This reactor id: ' . $reactor_id . PHP_EOL . 'Hello ' . $data . '!' . PHP_EOL);
}
/**
* 监听连接关闭事件
* @param $serv Swoole\Server TCP对象
* @param $client_id int 客户端连接ID
*/
public function onClose($serv, $client_id)
{
echo 'Client: Client ' . $client_id . ' close.' . PHP_EOL;
}
/**
* 启动TCP服务器
*/
public function start()
{
$this->server->start();
}
}
$tcp = new Tcp();
$tcp->start();