PHP通过Socket发送UDP数据

PHPABC PHP开发 844 次浏览 , , 没有评论

1.创建一简单的UDP服务器[server.php]

//服务器信息
$server = 'udp://127.0.0.1:9998';
//消息结束符号
$msg_eof = "\n";
$socket = stream_socket_server($server, $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
    die("$errstr ($errno)");
}
 
do {
    //接收客户端发来的信息
    $inMsg = stream_socket_recvfrom($socket, 1024, 0, $peer);
    //服务端打印出相关信息
    echo "Client : $peer\n";
    echo "Receive : {$inMsg}";
    //给客户端发送信息
    $outMsg = substr($inMsg, 0, (strrpos($inMsg, $msg_eof))) . ' -- ' . date("Y-m-d H:i:s\r\n");
    stream_socket_sendto($socket, $outMsg, 0, $peer);
} while ($inMsg !== false);

2.简单的客户端[client.php]

function udpGet($sendMsg = '', $ip = '127.0.0.1', $port = '9998') {
    $handle = stream_socket_client("udp://{$ip}:{$port}", $errno, $errstr);
    if (!$handle) {
        die("ERROR: {$errno} - {$errstr}\n");
    }
    fwrite($handle, $sendMsg . "\n");
    $result = fread($handle, 1024);
    fclose($handle);
    return $result;
}
 
$result = udpGet('Hello World');
echo $result;

3.命令行模式下运行服务端

php server.php

再开一个窗口运行客户端程序

php client.php

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go