zoukankan      html  css  js  c++  java
  • php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端

    • 绑定tcp服务器的地址

    $swserver = new swoole_server("127.0.0.1",9501);

    • 设置tcp服务器装机容量(太危言耸听了~其实就是设置属性)

    $swserver->set([

      'worker_num'=>8,

      'max_request'=>10000

    ]);

    • 读取连接请求信息---接通

    $swserver->on('connect',function($swserver,$fd,$reactor_id){

      echo "server线程:{$reactor_id}受到来自客户端线程{$fd}的请求";  

    });

    • 向客户端发送数据(我们姑且这样做,客户端发来什么,我们原样返回什么)

    $swserver->on('receive',function($swserver,$fd,$reactor_id,$data){

      $swserver->send($fd,"服务器线程{$reactor_id}收到了来自客户端线程{$fd}的数据,并原样返回,其内容为:{$data}");

    });

    • 结束与客户端的对话

    $swserver->on('close',function($swserver,$fd){

      echo "服务端{$swserver}与客户端{$fd}的对话结束!";

    });

    • 开启服务端

    $swserver->start();

    如果上机实验时提示:failed, Error: Address already in use[98]
    则利用 lsof -i:端口号  查看端口上运行的进程(或者使用 netstat -anp |grep 端口号查看进程)
    然后运行sudo kill -9 进程号,杀掉占用端口的进程
    另外开启一个终端窗口,运行命令telnet 127.0.0.1 9501连接服务端

    服务端显示:

    [root@localhost myswoole]# php swserver2.php
    server线程:2受到来自客户端线程1的请求

    客户端发送信息:喜欢陈培昌,回显信息如下:

    服务器线程2收到了来自客户端线程1的数据,并原样返回,其内容为:喜欢陈培昌

    • 查看服务端进程开启的线程数

    ps aft | grep swserver2.php(注意:这里swserver2.php是我取的名字,实际运行时,以你编写的程序文件名为准)

    显然,这里对应了服务器端 worker_num的数量
    
    $swserver
    ->set([   'worker_num'=>8,   'max_request'=>10000 ]);
  • 相关阅读:
    校园WebGIS开发与实践(论文部分)
    初来博客园,请多多关照
    MIFtoTAB and TABtoMIF(MIF和TAB互转小工具)
    MIFtoSHP通用转换工具
    activity 对home 按钮事件的处理
    在XML布局文件里,会遇到的一些单位
    自己写的Adapter 无法被鼠标点中问题
    linux 下查看文件修改时间 等
    Android中使用GridView分页显示系统所安装的应用,支持拖动与手势滑动
    getLaunchIntentForPackage 获取到的为null原因
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10823053.html
Copyright © 2011-2022 走看看