您现在的位置是:技术博客 > PHPPHP Swoole 基础篇二(TCP服务器) Lucas2020-09-08 14:37【代码】880人已围观 简介swoole与TCP服务器的交互。TCP特点:位于传输层基于流的方式、面向连接、可靠通信、在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销、通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。TCP支持的应用协议:FTP 文件传送、RLogin 远程登录、SMTP POP3 电子邮件、NFS 网络文件系统、远程打印、远程执行、名字服务器终端服务器等服务类型。 #### 一、官方给出的TCP服务器的代码示例 1、server.php ``` <?php //创建Server对象,监听 127.0.0.1:9501 端口 $server = new Swoole\Server('127.0.0.1', 9501); //监听连接进入事件 $server->on('Connect', function ($server, $fd) { echo "Client: Connect.\n"; }); //监听数据接收事件 $server->on('Receive', function ($server, $fd, $from_id, $data) { $server->send($fd, "Server: " . $data); }); //监听连接关闭事件 $server->on('Close', function ($server, $fd) { echo "Client: Close.\n"; }); //启动服务器 $server->start(); ``` 2、通过CLI模式调用server.php文件 ``` php server.php ``` 3、查看端口 ``` # 查看端口号是否已使用 netstat -anp | grep 9501 tcp 0 0 127.0.0.1:9501 0.0.0.0:* LISTEN 2535/php tcp 0 0 127.0.0.1:9501 127.0.0.1:46544 CLOSE_WAIT 2535/php # 杀死进程,上面的例子pid=`2535` kill -9 pid ``` 4、安装netcat(网络工具中有“瑞士军刀”美誉) ``` yum install -y nc ``` 5、安装telnet ``` yum list telnet* 列出telnet相关的安装包 yum install telnet-server 安装telnet服务 yum install telnet.* 安装telnet客户端 ``` 6、调用telnet工具 ``` telnet 127.0.0.1 9501 # 提示:按 Ctrl + ] 键调出telnet的命令行,quit退出 hello Server: hello ``` #### 二、小试牛刀地写一个TCP服务器代码示例 1、server.php ``` <?php //创建服务器对象 $host = "0.0.0.0";//服务器主机地址,0.0.0.0表示所有客户端都能连接。 $port = 9509;//监听端口 $mode = SWOOLE_PROCESS;//服务器运行模式,默认多进程 $sock_type = SWOOLE_SOCK_TCP;//服务器套接字类型,默认TCP $server = new swoole_server($host, $port, $mode, $sock_type); //设置服务器运行时参数 $config = []; $config["worker_num"] = 4;//设置启动的Worker进程数量 $config["daemon"] = false;//设置守护进程化 $server->set($config); //注册事件回调函数 //Master进程 监听启动事件 $server->on("Start", function(swoole_server $server){ try{ $master_pid = $server->master_pid;//获取Master主进程的PID $manager_pid = $server->manager_pid;//获取Manager管理进程的PID echo "[start] master {$master_pid} manager {$manager_pid}".PHP_EOL; }catch(Exception $e){ echo "[start] exception"; } }); //Worker进程 监听连接进入事件 $server->on("Connect", function(swoole_server $server, $fd, $reactor_id){ $worker_pid = $server->worker_pid; echo "[connect] worker {$worker_pid} reactor {$reactor_id} client {$fd}: connect".PHP_EOL; }); //Worker进程 监听数据接收事件 $server->on("Receive", function(swoole_server $server, $fd, $reactor_id, $data){ $worker_pid = $server->worker_pid; echo "[receive] worker {$worker_pid} reactor {$reactor_id} client {$fd}: {$data}".PHP_EOL; //向客户端发送消息 $message = "welcome"; $server->send($fd, $message); }); //Worker进程 监听连接关闭事件 $server->on("Close", function(swoole_server $server, $fd, $reactor_id){ echo "[close] reactor {$reactor_id} client {$fd}: close".PHP_EOL; }); //启动服务器 $server->start(); ``` 2、client.php ``` <?php $client = new swoole_client(SWOOLE_SOCK_TCP); if(!$client->connect("127.0.0.1",9509)){ echo "连接失败"; exit; } //php cli常量 fwrite(STDOUT,"请输入消息:"); $msg = trim(fgets(STDIN)); //发送消息给tcp server服务器 $client->send($msg); //接受来自server的数据 $result = $client->recv(); echo $result; ``` 3、分别调用server.php和client.php, ``` php server.php php client.php ``` 4、效果图  转载:感谢您对Lucas个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源Lucas个人博客”。 很赞哦! ( 0 ) 上一篇:Swoole 基础篇一(初识) 下一篇:Swoole 基础篇三(HTTP服务器) 相关文章 高并发库存防控超量 Swoole 基础篇一(初识) Sublime代码格式化 Session与Cookie 点击排行 生活不止眼前的苟且,还有诗和远方 十年一觉电影梦 奥地利基茨比厄尔 禅修治愈身心 自律成就自我 零边际成本社会 Modern PHP 鸟哥的Linux私房菜 本栏推荐 要技术,更要有创意 定时任务 Curl无法发送https请求 Lnmp环境搭建 常用的SQL函数 Windows的cmd指令 ueditor工具栏浮动bug 有趣的js插件 标签云 git laravel swoole javascript vue ajax html css sql linux docker flask django nginx apache thinkphp markdown sublime wechat layui photoshop nodejs mysql windows composer java maven springboot mybatis IDE 猜你喜欢 Swoole 基础篇一(初识) PHP进程管理器 正则的快速上手 Sublime代码格式化 Lnmp环境搭建 高并发库存防控超量 Linux之top命令 常用的SQL函数 站点信息 建站时间:2018-05-01 在线人数:1人 文章统计:263篇 总浏览量:222571次 统计数据:百度统计 个人信息:扫描二维码查看