Swoole,网络通信引擎(一)


基本lunix 命令

    测试
 * telent 127.0.0.1 9501
 
 * 安装  telent
    yum list telnet*
    yum install telnet-server
    yum install telnet.*


    测试端口
 * netstat -anp | grep 9501
    关闭当前进程
 * kill 28763


tcp  

$serv = new Swoole\Server("127.0.0.1", 9501);

//设置服务器参数
$serv->set(array(
    'worker_num' => 2,   //工作进程数量  cup的1-4倍
    'max_request' => 1000 //每个worker进程允许处理的最大任务数。
//    'daemonize' => true, //是否作为守护进程
));

//设置事件回调函数
$serv->on('connect', function ($serv, $fd) {
    echo "Client:Connect.\n";
});

//监听数据接收事件
/**
 * $serv Swoole 对象
 * $fd          客户端链接标示
 * $reactor_id  线程ID
 * $data        接收的数据
 */
$serv->on('receive', function ($serv, $fd, $reactor_id, $data) {
//    $serv->send($fd, 'Swoole: ' . $data);
    $serv->send($fd,"客户端链接标示:[".$fd."],线程ID:[".$reactor_id."],接收的数据:[".$data."]");
//    $serv->close($fd);
});

//监听关闭事件
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.\n";
});

//启动服务器
$serv->start();

//php    /www/wwwroot/Swoole/demo/server/tcp.php

tcp客户端

  <?php
/**
 * Created by PhpStorm.
 * User: 白衬衫
 * Date: 2019/7/4
 * Time: 14:29
 * Info: 说明
 */

//
 $client = new Swoole_client(SWOOLE_SOCK_TCP);
 if(!$client->connect('127.0.0.1', 9501)){
     echo '连接失败';
     exit();
 }

//PHP cli常量
fwrite(STDOUT,'请输入消息');
$msg = trim(fgets(STDOUT));

//发送消息
$client->send($msg);

//接收来自server的消息
$result = $client->recv();

echo $result;

/**
    运行
 * php /www/wwwroot/Swoole/demo/client/tcp_client.php

 **/


udp服务端


<?php
/**
 * Created by PhpStorm.
 * User: 白衬衫
 * Date: 2019/7/4
 * Time: 12:39
 * Info: 说明
 */

$serv = new Swoole\Server("127.0.0.1", 9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);

//设置服务器参数
$serv->set(array(
    'worker_num' => 2,   //工作进程数量  cup的1-4倍
    'max_request' => 1000 //每个worker进程允许处理的最大任务数。
//    'daemonize' => true, //是否作为守护进程
));

//不需要 connect

//监听数据接收事件
/**
 * $serv Swoole 对象
 * $fd          客户端链接标示
 * $reactor_id  线程ID
 * $data        接收的数据
 */
$serv->on('Packet', function ($serv,  $data , $clientInfo) {
    $serv->sendto($clientInfo['address'], $clientInfo['port'], "Server ".$data);
    var_dump($clientInfo);
});

//监听关闭事件
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.\n";
});

//启动服务器
$serv->start();


/**
    运行
 * php /www/wwwroot/Swoole/demo/server/udp.php
    测试

**/

udp客户端

 <?php
/**
 * Created by PhpStorm.
 * User: 白衬衫
 * Date: 2019/7/4
 * Time: 14:29
 * Info: 说明
 */

//
 $client = new Swoole_client(SWOOLE_SOCK_UDP);
 if(!$client->connect('127.0.0.1', 9502)){
     echo '连接失败';
     exit();
 }

//PHP cli常量
fwrite(STDOUT,'请输入消息');
$msg = trim(fgets(STDOUT));

//发送消息
$client->send($msg);

//接收来自server的消息
$result = $client->recv();

echo $result;

/**
    运行
 * php /www/wwwroot/Swoole/demo/client/udp_client.php

 **/



svrver服务端


<?php
/**
 * Created by PhpStorm.
 * User: 白衬衫
 * Date: 2019/7/4
 * Time: 17:23
 * Info: 说明
 */

$http = new swoole_http_server("0.0.0.0", 9503);

$http->set(
    [
        'enable_static_handler'=>true,
        'document_root'=>'/www/wwwroot/Swoole/demo/data'

    ]
);

$http->on('request', function ($request, $response) {
    var_dump($request->get, $request->post);
    var_dump($request);
    $response->header("Content-Type", "text/html; charset=utf-8");
    $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});

$http->start();

/**
    运行
 *  php /www/wwwroot/Swoole/demo/server/http_server.php
    浏览器访问  IP:9503
 **/



---------------------
作者:前世的我
来源:前世的我
原文:http://www.w55.site/blog/article/look/id/31.html
版权声明:本文为博主原创文章,转载请附上博文链接!