zoukankan      html  css  js  c++  java
  • Swoole练习 UDP

    UDP 服务代码

    <?php
    
    //创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP
    $serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
    #$serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PREOESS, SWOOLE_SOCK_IDP);
    //监听数据接收事件
    $serv->on('Packet', function ($serv, $data, $clientInfo) {
        $serv->sendto($clientInfo['address'], $clientInfo['port'], "Server ".$data);
        var_dump($clientInfo);
    });
    
    //启动服务器
    $serv->start();
    

    UDP服务器与TCP服务器不同,UDP没有连接的概念。启动Server后,客户端无需Connect,直接可以向Server监听的9502端口发送数据包。对应的事件为onPacket。

    • $clientInfo是客户端的相关信息,是一个数组,有客户端的IP和端口等内容
    • 调用 $server->sendto 方法向客户端发送数据

    示例:客户端向9502端口发送hellow -> 服务端对应事件为onPacket -> 在sendto根据客户端的IP和端口信息返回数据。

    为了更方便服务端var_dump 打印 $clientInfo 数据。

    客户端发送和返回

    nc -u 127.0.0.1 9502
    hellow
    Server hellow
    wwww
    Server wwww
    

    服务端接受返回

    php udp_server.php 
    array(4) {
      ["server_socket"]=>
      int(3)
      ["server_port"]=>
      int(9502)
      ["address"]=>
      string(9) "127.0.0.1"
      ["port"]=>
      int(50256)
    }
    array(4) {
      ["server_socket"]=>
      int(3)
      ["server_port"]=>
      int(9502)
      ["address"]=>
      string(9) "127.0.0.1"
      ["port"]=>
      int(50256)
    }
    

    官网是netcat -u 127.0.0.1 9502

    可以yum -y install nc 链接

  • 相关阅读:
    一篇文章搞懂密码学基础及SSL/TLS协议
    如何编写一个多进程性能测试程序
    自动化测试用例编写日志总结(一)
    Python lambda匿名函数
    Python map() 函数
    python中sorted函数的理解(对list列表排序,对dict字典排序)
    python list列表冒泡排序
    range的用法
    同时安装python2和python3是使用pip的方法:
    cmd输出文件树结构
  • 原文地址:https://www.cnblogs.com/buxiangxin/p/8623273.html
Copyright © 2011-2022 走看看