坚持
  • 微信

当前位置:首页 > 后端技术 > SWOOLE >

TCP服务器

作者:管理员 时间:2022-12-05 阅读数: 2640人阅读

    什么是TCP?

    TCP 即传输控制协议 (Transmission Control Protocol),是一个面向连接的协议,为用户进程提供可靠的全双工字节流。TCP 套接字是一种流套接字。TCP关心 确认、超时和重传之类的细节。大多数因特网应用程序使用 TCP,TCP 既可以使用 IPV4,也可以使用 IPv6。

    什么是 Swoole TCP Server?

    swoole 层实现了的TCP 协议的服务器,只能用于 cli 环境,默认使用SWOOLE_ PROCESS 模式,因此除了 worker 进程外,会创建额外 master 和

manager 两个进程。服务器启动后,通过 ‘Kill主进程ID’来结束所有工作进程。

    Swoole TCP Server 特点:

    1.Swoole\Server 是异步服务器,所以是通过监听事件的方式来编与程序的。

    2.当有新的 TCP 连接进入时会执行 onConnect 事件回调,当某个连接向服务器发送数据时会回调 onReceive 函数,客户端断开会触发 onClose 事件回调。

    3.$fd 是客户端连接的唯 一标识。

    4.调用 $server->send() 向客户端连接发送数据。

    5.调用 $server->close()可以强制关闭某个客户端连接。

    Swoole TCP Server 参数:

    $host 监听的 ip 地址(支持 IPV4 和IPV6)

    $port 监听的端口(监听小手 1024 端口需要 root 权限,0表示随机,如果此端口被占用 server->start 时会失败)

    $mode 运行模式(支持 SWOOLE PROCESS 和 SWOOLE BASE)

    $socket_type Socket 的类型 ( $socket_type | SWOOLE_ SSL 启用SSL 加密,启用SSL 后必须配置 ssl_key_file 和ssl_cert_file)

    更多信息参照官方文档: https://wiki.swoole.com/#/server/methods

    代码示例:

    <?php
    $server new Swoole\Server("0.0.0.0",20001,SWOOLE_PROCESS,SWOOLE_SOCK_TCP);
    $server->set([worker_num'=>2]);
    $server->on('Connect',function ($server,$fd){
        echo "Client {$fd} connect\n";
    })
    $server->on("Receive",function($server,$fd,$reactorId,$data){
        //验证有没有接收到客户端请求
        $server->send($fd,"aaaa n");
    })
    $server->on('Close',function($server,$fd){
        echo "Client {$fd}closed\n";
    })
    $server->start()