通過socket創建udp服務,獲取對端的ip和port信息。并進行打印
2.1、udp服務源碼
<?php
/**
* Copyright(C) Iamasb
* @project : 3、workerman相關知識點
* @explain : 原生socket創建創建udp服務
* @filename : socket_udp.php
* @author : Iamasb
*/
// 創建udp
if (!($resource = socket_create(AF_INET,SOCK_DGRAM, SOL_UDP))) {
echo "socket create is error";
exit();
}
// 綁定本地ip和端口
if (!socket_bind($resource,'0.0.0.0','1235')) {
echo "socket bind is error";
exit();
}
// 設置端口複用
if (!socket_set_option($resource, SOL_SOCKET, SO_REUSEADDR, 1)) {
echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
exit;
}
// 循環
while (1) {
$from = '';
$port = 0;
// 接收數據
socket_recvfrom($resource, $buf, 1024, 0, $from, $port);
echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;
// 往對端發送數據
socket_sendto($resource,'iamasb',strlen('iamasb'),0,$from,$port);
}
2.2、啟動udp服務
3、測試通過編寫udp客戶端進行測試
3.1、udp客戶端代碼
<?php
if (!($resource = socket_create(AF_INET,SOCK_DGRAM, SOL_UDP))) {
echo "socket create is error";
exit();
}
$msg = "Ping !";
$len = strlen($msg);
socket_sendto($resource, $msg, $len, 0, '127.0.0.1', 1235);
$from = '';
$port = 0;
socket_recvfrom($resource, $buf, 1024, 0, $from, $port);
echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;
socket_close($resource);
3.2、執行udp客戶端
此時udp服務端的打印結果如下
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!