首先创建一个tcp服务器:
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501);
// 设置参数
$serv->set(array(
'worker_num' => 4, //worker process num
'max_request' => 5000,
));
//监听连接进入事件
// $fd就是客户端连接的唯一标识符
// $reactor_id 线程id
$serv->on('connect', function ($serv, $fd, $reactor_id) {
echo "Client: Connect.\n";
});
//监听数据接收事件
$serv->on('receive', function ($serv, $fd, $from_id, $reactor_id,$data) {
$serv->send($fd, "Server: ".$data);
});
//监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
//启动服务器
$serv->start();
然后使用命令行执行
php tcp.php
然后在新开一个命令行,执行:
# 检测端口是否启动
netstat -anp | grep 9501
# 链接 tcp 服务器
telnet 127.0.0.1 9501
命令行查看线程数:
ps aft | grep tcp.php
swoole客户端链接
创建 swoole_client.php,内容如下:
<?php
// swoole 内置常量 SWOOLE_SOCK_TCP
$client = new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 9501, -1))
{
echo '链接失败';
exit("connect failed. Error: {$client->errCode}\n");
}
// php 内置常量 STDOUT STDIN
fwrite(STDOUT,''请输入消息);
$msg = trim(fgets(STDIN));
// 发送给 tcp 服务器
$client->send($msg);
// 接收 tcp 服务器返回的数据
echo $client->recv();
$client->close();
网友评论