UDP 服务器

UDP服务器基于Swoole扩展。

安装方式可参考PHP SWOOLE扩展安装.

服务端代码(udp_server.php)

<?php 
$serv = new swoole_server('127.0.0.1',9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);
$serv->on('Packet',function($serv,$data,$clientInfo) {
    $serv->sendto($clientInfo['address'],$clientInfo['port'],'Server '.$data);
    var_dump($clientInfo);
});

$serv->start();

运行代码:

php udp_server.php

客户端代码

<?php 
$sock = socket_create(AF_INET,SOCK_DGRAM,SOL_UDP);
socket_set_option($sock,65535,SO_BROADCAST,1);//设置为广播方式
$str = 'hello world';//要发送的字符串
socket_sendto($sock,$str,strlen($str),0,"127.0.0.1",9502);
$result = '';
$from = '';
$port = 0;
socket_recvfrom($sock,$result,65535,0,$from,$port);//接收服务端发送过来的数据
socket_close($sock);//关闭
var_dump($result);
echo '<br>';
var_dump($from);
echo '<br>';
var_dump($port);

注意:socket_recvfrom的第二($result),第五($from),第六($port)个参数必须是变量用于存储服务端的数据。$result存储服务端发送过来的数据,$from存储ip,$port存储远程端口

结果示例:

string(18) "Server hello world" 
string(9) "127.0.0.1" 
int(9502)