• 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 链接

  • 相关阅读:
    六大设计原则(一)
    .Net MVC 实现WebSocket
    Socket基础三
    Linux date命令的用法(转)
    SpringBoot自定义校验注解校验日期时间格式字符串
    前缀、中缀、后缀表达式
    什么是重放攻击,列举几种常见防御手段?
    09月13日总结
    09月12日总结
    09月11日总结
  • 原文地址:https://www.cnblogs.com/buxiangxin/p/8623273.html
Copyright © 2020-2023  润新知