您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
swoole学习笔记-tcp服务器
发布时间:2018-04-30 10:44:25编辑:雪饮阅读()
脚本:
<?php
//创建swoole-tcp服务器
$host='0.0.0.0';
$port=9501;
//$serv=new swoole_server($host,$port,$mode,$sock_type);
$serv=new swoole_server($host,$port);
/*
参数解析:
$host:可以为本机ip如127.0.0.1或外网ip如192.168.50.133、0.0.0.0、。。。。
并且支持ipv4和ipv6
$port:端口号进来使用1024以上的,因为1024以下的端口号是需要root权限的。
$mode:可选参数,默认为SWOOLE_PROCESS多进程的方式
$soke_type:可选参数,sock类型,默认为SWOOLE_SOCK_TCP
*/
//配置swoole-tcp服务器监听
/*
bool $swoole_server->on(string $event,mixed $callback);
参数解析:
$event:事件类型,有如下
connect:当建立连接的时候
receive:当接收到数据
close:关闭连接
$callback:回调函数,有如下
connect时有两个形参,分别是服务端信息和客户端信息
receive时有四个形参,比起connect时多了客户端id和接收到的数据
close时和connect时一样
*/
$serv->on('connect',function($serv,$fd){
var_dump($serv);
var_dump($fd);
echo "建立连接\n";
});
$serv->on('receive',function($serv,$fd,$from_id,$data){
echo "接收到数据\n";
var_dump($data);
});
$serv->on('close',function($serv,$fd){
echo '连接关闭';
});
//swoole-tcp服务器的启动
$serv->start();
服务器端运行
将写好的php上传至已经配置好swoole扩展的php服务器中可以直接通过命令来启动。
如:php swoole.php
如要查看是否运行成功
可以通过命令ps -ajft来查看进程
a: 显示现行终端机下的所有程序,包括其他用户的程序。
j:用任务格式来显示进程。
f: 用ASCII字符显示树状结构,表达程序间的相互关系。
t:显示终端机编号
发现有3个进程,这是刚运行swoole.php脚本后swoole-server服务器启动的进程。
调试
下载网络调试助手netassist.rar
打开后
协议类型选择tcp客户端
服务器ip地址就是刚才php脚本运行所在的服务器ip地址
服务器端口是php脚本中所指定的端口。
然后点击连接,若出现连接失败如下图
则可能是服务器端防火墙阻挡的缘故,在学习阶段可以直接关闭防火墙。
如systemctl stop firewalld.service
再次连接就可以连接上了。
连接成功后会发现,服务器端也同时按预料一样把我们配置的监听事件中的connect事件回调函数中的服务器端信息和客户端信息以及我们自定义“建立连接”都输出了
然后我们依次点击调试助手上的发送按钮和断开按钮进行测试,然后服务器端也如我们预料的一样触发了receive事件和close事件。
关键字词:swoole,tcp服务器