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 鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM