php swoole udp,基于Swoole如何搭建UDP服务?
本節將會講解如下2個問題:
通過Swoole如何搭建UPD服務?對比TCP和UDP有什么不同?
01通過Swoole如何搭建UPD服務
新建一個文件命名為 udp_server.php,代碼如下:
在命令行執行如下命令就可以開啟TCP服務:
php udp_server.php
運行完命令后就可以通過 netstat 工具查看服務是否啟動成功,如果已經在監聽9501端口了,這時就可以使用 netcat 工具來連接服務器了。
netcat -u 127.0.0.1 9502
helloServer: hello
同時服務端命令行會返回如下信息:
array(4) {
["server_socket"] => int(3)
["server_port"] => int(81)
["address"] => string(9) "127.0.0.1"
["port"] => int(10000)
}
02TCP和UDP有什么不同
UDP服務和TCP服務不同,UDP沒有連接的概念。啟動Server后,客戶端無需 Connect,直接可以向Server監聽的9502端口發送數據包。UDP服務端收到UDP數據包后會回調 onPacket 函數,此事件發生在 Worker進程中。onPacket 函數如下:
function onPacket(Swoole\Server $server, string $data, array $client_info);
$server 參數是 Swoole 中的 Server 對象$data 字段是UDP服務接收到的內容,可能是文本格式或者二進制內容$client_info 字段存放的是客戶端信息,包括 address/port/server_socket 等多項客戶端信息數據
當服務器同時監聽 TCP/UDP 端口時,收到 TCP 協議的數據會回調 onReceive,收到 UDP 數據包會回調 onPacket 函數。服務器設置的 EOF 或 Length 等自動協議處理對于 UDP 端口時無效的,因為 UDP 包本身存在消息邊界,不需要額外的協議處理。
總結
以上是生活随笔為你收集整理的php swoole udp,基于Swoole如何搭建UDP服务?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java sdk下载_Java Sdk下
- 下一篇: Win32 串口编程(二)