• Swoole练习 TCP


    TCP

    <?php
    
    $serv = new swoole_server("127.0.0.1", 9501);
    
    //监听连接进入事件
    $serv->on('connect', function ($serv, $fd) {
        echo "Client: Connect.
    ";
    });
    
    //监听数据接收事件
    $serv->on('receive', function ($serv, $fd, $from_id, $data) {
        $serv->send($fd, "Server: ".$data);
    });
    
    //监听连接关闭事件
    $serv->on('close', function ($serv, $fd) {
        echo "Client: Close.
    ";
    });
    
    //启动服务器
    $serv->start();
    ?>
    

    这里就创建了一个TCP服务器,监听本机9501端口。它的逻辑很简单,当客户端Socket通过网络发送一个 hello 字符串时,服务器会回复一个 Server: hello 字符串。

    swoole_server是异步服务器,所以是通过监听事件的方式来编写程序的。当对应的事件发生时底层会主动回调指定的PHP函数。如当有新的TCP连接进入时会执行onConnect事件回调,当某个连接向服务器发送数据时会回调onReceive函数。

    • 服务器可以同时被成千上万个客户端连接,$fd就是客户端连接的唯一标识符
    • 调用 $server->send() 方法向客户端连接发送数据,参数就是$fd客户端标识符
    • 调用 $server->close() 方法可以强制关闭某个客户端连接
    • 客户端可能会主动断开连接,此时会触发onClose事件回调

    打开另一个窗口链接

    telnet 127.0.0.1 9501
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    wanghaipeng
    Server: wanghaipeng
    

     正常返回

  • 相关阅读:
    Linux下守护进程的编程实现(转)
    gcc 中-I、 -L 与-l选项的作用
    va_list 、va_start、 va_arg、 va_end 使用说明
    sizeof('a')在C与C++中的区别
    Qt主要类简介
    linux命令
    linux文件编程
    linux一些基本命令
    Linux主机SSH免密设置解析
    javaweb添加拦截器
  • 原文地址:https://www.cnblogs.com/buxiangxin/p/8623175.html
Copyright © 2020-2023  润新知