• swoole入门


    我们来用swoole这个php扩展实现一个简单的客户端和服务器,并且让它们进行简单的交流
    首先,我们先来实现客户端(命名为:client.php):

    <?php
    $client = new swoole_client(SWOOLE_SOCK_TCP);
    if (!$client->connect('127.0.0.1', 9501, -1))
    {
        exit("connect failed. Error: {$client->errCode}
    ");
    }
    
    fwrite(STDOUT, 'Enter the message you want to send, and you can enter the no to quit it '."
    ");
    while(true) {
        fwrite(STDOUT, 'client: ');  
        $info = fgets(STDIN);
        if('no'."
    " === $info) {
            break;
        }
        $client->send($info);
        $recive = $client->recv();
        echo 'server: '.$recive."
    ";
    }
    $client->close();
    

    然后,再来实现一个简单的服务器(命名为:server.php):

    <?php
    $server = new swoole_server('127.0.0.1', 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);
    $server->on('receive', function($server, $fd, $from_id, $data) {
        if('what is your name'."
    " === $data) {
            $server->send($fd, 'My name is huanghantao');
        }
        elseif('where are you from'."
    " === $data) {
            $server->send($fd, 'I am from China');
        }
        elseif('how old are you'."
    " === $data) {
            $server->send($fd, 'I am 20');
        }
        else{
            $apiKey = "7e97323fbb5b4c56aetc7f1ff5231b20"; 
            $apiURL = "http://www.tuling123.com/openapi/api?key=KEY&info=INFO"; 
            // 设置报文头, 构建请求报文 
            header("Content-type: text/html; charset=utf-8"); 
            $reqInfo = $data; 
            $url = str_replace("INFO", $reqInfo, str_replace("KEY", $apiKey, $apiURL)); 
    
            $res = json_decode(file_get_contents($url), true);
            $server->send($fd, $res['text']);
        }
    });
    
    $server->start();
    

    接下来,进入这两个文件所在的目录

     
    1.PNG

    然后再执行这server.php文件来启动服务器(注意: 一定要先启动服务器再来启动客户端,注:我是用的root,服务器和客户端需要开两个,一开始在一个命令行里试死活不行):
    php server.php

     
    2.PNG

    此时,就开始监听环回地址127.0.0.1的9501端口
    接着,我们执行client.php这个文件:
    php client.php

     
    3.PNG

    这样,客户端和服务器就建立了一个TCP网络连接
    现在,我们就可以在客户端和服务器进行通信了,现在我们来试一试,很好玩的:

     
    4.PNG

    最后,我们输入no来让客户端主动断开与服务器的连接

     
    5.PNG




  • 相关阅读:
    javaWeb css图文混排
    Junit 测试 @Test 红名问题
    java面试题:已知一个数组[2,4,6,2,1,5],将该数组进行排序(降序,不能用工具类进行排序),创建两条线程交替输出排序后的数组,线程名自定义
    【转】正则表达式的分组
    正则表达式基础
    IIS连接数修改
    【整理】fiddler不能监听 localhost和 127.0.0.1的问题
    【转】WKT、SRID、EPSG概念
    WPF中查找控件的扩展类
    【转】告别码农,成为真正的程序员
  • 原文地址:https://www.cnblogs.com/blange/p/8488551.html
Copyright © 2020-2023  润新知