作者:mobiledu2502902537 | 来源:互联网 | 2023-07-23 13:24
首先做一个tcp服务的脚本tcp.php
//创建Server对象 监听0.0.0.0:9501端口 这里写此地址,为不限制客户端的访问
$serv = new Swoole_server('0.0.0.0',9501);$serv->set(array('worker_num' => 8,//worker进程数 cpu核数的1-4倍'max_request' => 10000,
));//监听连接进入事件
/** $fd 客户端连接的唯一标志* $reactor_id线程id*/
$serv->on('connect',function($serv,$fd,$reactor_id){echo "Client:{$reactor_id}-{$fd}Connect.\n";
});//监听数据接受事件
$serv->on('receive',function($serv,$fd,$from_id,$data){$serv->send($fd,"Server:".$data);
echo $fd.":".$data.".\n";
});//监听连接关闭事件
$serv->on('close',function($serv,$fd){echo "Client:Close.\n";
});$serv->start();
执行 :php tcp.php
这样一个简单的tcp服务就启动了。
通过服务端口命令查看下tcp的运行状态:
netstat -apn | grep 9501
看到结果:
tcp 0 0 0.0.0.0:9501 0.0.0.0:* LISTEN 4826/php
也可以通过查看脚本运行的进程来查看:
ps aft | grep tcp.php
得到结果:
4861 pts/2 S+ 0:00 \_ grep --color=auto tcp.php4826 pts/1 Sl+ 0:00 \_ php tcp.php4827 pts/1 S+ 0:00 \_ php tcp.php4830 pts/1 S+ 0:00 \_ php tcp.php4831 pts/1 S+ 0:00 \_ php tcp.php4832 pts/1 S+ 0:00 \_ php tcp.php4833 pts/1 S+ 0:00 \_ php tcp.php4834 pts/1 S+ 0:00 \_ php tcp.php4835 pts/1 S+ 0:00 \_ php tcp.php4836 pts/1 S+ 0:00 \_ php tcp.php4837 pts/1 S+ 0:00 \_ php tcp.php
然后写一个client脚本来与tcp服务简单互动 client.php:
//连接swoole tcp服务
$client = new swoole_client(SWOOLE_SOCK_TCP);if(!$client->connect("192.168.31.129",9501)){echo "连接失败";exit;
}//php cli常量
fwrite(STDOUT,"请输入消息:");
$msg = trim(fgets(STDIN));//发送消息给tcp server服务器$client->send($msg);//接受来自server的数据
$result = $client->recv();
echo $result;
然后,php client.php
得到:请输入消息:
输入hello world!
同時,服务端也有了反应
5:hello workd.
Client:Close.
小伙伴,你成功了吗