php udp发送和接收_63、php利用原生socket创建udp服务
1、案例函數(shù)匯總
2、案例
通過socket創(chuàng)建udp服務(wù),獲取對端的ip和port信息。并進(jìn)行打印
2.1、udp服務(wù)源碼
/**
* Copyright(C) Iamasb
* @project : 3、workerman相關(guān)知識點(diǎn)
* @explain : 原生socket創(chuàng)建創(chuàng)建udp服務(wù)
* @filename : socket_udp.php
* @author : Iamasb
*/
// 創(chuàng)建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();
}
// 設(shè)置端口復(fù)用
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;
}
// 循環(huán)
while (1) {
$from = '';
$port = 0;
// 接收數(shù)據(jù)
socket_recvfrom($resource, $buf, 1024, 0, $from, $port);
echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;
// 往對端發(fā)送數(shù)據(jù)
socket_sendto($resource,'iamasb',strlen('iamasb'),0,$from,$port);
}
2.2、啟動udp服務(wù)
3、測試
通過編寫udp客戶端進(jìn)行測試
3.1、udp客戶端代碼
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、執(zhí)行udp客戶端
此時udp服務(wù)端的打印結(jié)果如下
總結(jié)
以上是生活随笔為你收集整理的php udp发送和接收_63、php利用原生socket创建udp服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 东方甄选被投诉桃子霉烂长毛 官方已退款处
- 下一篇: 天玑9000/8000系列处理器大受欢迎