server接收dtu透传代码_Swoole学习笔记三:初探server与client(Client异步)

c27c3eb468d1ad6808561e4bf1a30973.png

1、搭建server.php代码

<?php
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501); 
//监听连接进入事件
$serv->on('connect', function ($serv, $fd) {  
    echo "Client: 客户端握手成功.n";
});
//监听数据接收事件
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    echo 'Client:接收到客户端发送过来的数据包:'.$data."n";
    // 这里使用send,反推回去
    $serv->send($fd, "Server: ".$data);
});
//监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
    echo "Client: 客户端主动断开连接.n";
});
//启动服务器
$serv->start();

2、搭建client.php代码

<?php
//打开异步socket
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
//注册连接成功回调
$client->on("connect", function($cli) {
    // 向服务器发送数据
    $cli->send("小黄牛真他妈帅!");
    // 3秒后执行
    swoole_timer_after(3000, function() use($cli) {
        // 主动关闭连接
        $cli->close();
    });
});
//注册数据接收回调
$client->on("receive", function($cli, $data){
    echo "接收到回调数据: ".$data."n";
});
//注册连接失败回调
$client->on("error", function($cli){
    echo "服务端连接失败n";
});
//注册连接关闭回调
$client->on("close", function($cli){
    echo "与服务端关闭了连接n";
});
//发起连接
$client->connect('127.0.0.1', 9501, 0.5);

3、进行demo测试

这里注意,我们需要开启两个cmd命令界面,分别使用cd命令进入到server.phpclient.php文件的所在目录下。
然后先在第一个命令行中使用:php server.php
启动服务端代码

再到第二个命令行中使用命令启动客户端代码,发送一次握手请求进行测试:php client.php
php启动客户端代码

我们就可以看到以下结果了:

2d08a73480620d793766fc03ac5b0e2e.png

731ca8dfcbd4cefedfac1a1753a67f10.png

注意:代码里我们是使用了一个swoole_timer_after()函数,用于设置定时执行,如果对PHP7的闭包函数不熟的同学,建议看下博客里有关PHP7的文章。


最后推荐大家可以用下我开源的一个基于Swoole4.5+研发的PHP框架。该框架基于注解实现了很多好玩的功能,很适合新人快速上手Swoole扩展。

SW-X框架-专注高性能便捷开发而生的PHP-SwooleX框架​www.sw-x.cn
893091a16ffb7fc8e7942365c79f54bf.png

版权声明:本文为weixin_39553757原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。