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