TCP服务器
什么是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()
上一篇:UDP服务器