TCP长连接数据传输(同步方式)
TCP长连接的应用场景
比如聊天室,游戏等应用,就会使用到长链接
服务端应用程序
CLI 挂载启动服务端程序:php server.php
swoole的运行模式,默认是多进程模式,worker进程数量官方建议设置为CPU核数的1-4倍
$serv = new swoole_server('127.0.0.1', 9501);
// 工作进程数量. 设置为CPU的1-4倍最合理
$serv->set([
'worker_num' => 2,
]);
$serv->on('Connect', function ($serv, $fd) {
echo "new client connected." . PHP_EOL;
});
$serv->on('Receive', function ($serv, $fd, $fromId, $data) {
// 收到数据后发送给客户端
$serv->send($fd, 'Server '. $data);
});
$serv->on('Close', function ($serv, $fd) {
echo "Client close." . PHP_EOL;
});
$serv->start();
客户端应用程序
客户端启动发送数据:php client.php
new swoole_client(socket_type, sync_or_async) 有两个参数
第1参数:socket类型SWOOLE_SOCK_TCP :创建tcp socket
SWOOLE_SOCK_TCP6:创建tcp ipv6 socket
SWOOLE_SOCK_UDP:创建udp socket
SWOOLE_SOCK_UDP6:创建udp ipv6 socket第2参数:同步还是异步
SWOOLE_SOCK_SYNC :同步客户端
SWOOLE_SOCK_ASYNC :异步客户端
// 创建一个同步阻塞的tcp socket
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
// 随后建立连接,连接失败直接退出并打印错误码
$client->connect('127.0.0.1', 9501) || exit("connect failed. Error: {$client->errCode}\n");
// 向服务端发送数据
$client->send("hello server.");
// 从服务端接收数据
$response = $client->recv();
// 输出接受到的数据
echo $response . PHP_EOL;
// 关闭连接
$client->close();
赞赏码
![](https://files.cnblogs.com/files/lxwphp/zhifubao2.bmp)
![](https://files.cnblogs.com/files/lxwphp/weixin.bmp)
非学,无以致疑;非问,无以广识