当前位置:首页 > PHP

php实现udp通信

2026-04-03 08:25:48PHP

PHP实现UDP通信的方法

创建UDP服务器端

使用stream_socket_server函数创建UDP服务器:

php实现udp通信

$server = stream_socket_server("udp://0.0.0.0:9999", $errno, $errstr, STREAM_SERVER_BIND);
if (!$server) {
    die("Error: $errstr ($errno)");
}

while (true) {
    $data = stream_socket_recvfrom($server, 1024, 0, $peer);
    echo "Received: $data from $peer\n";
    stream_socket_sendto($server, "Server received: $data", 0, $peer);
}

创建UDP客户端

使用stream_socket_client函数创建UDP客户端:

php实现udp通信

$client = stream_socket_client("udp://127.0.0.1:9999", $errno, $errstr);
if (!$client) {
    die("Error: $errstr ($errno)");
}

stream_socket_sendto($client, "Hello UDP Server", 0);
$response = stream_socket_recvfrom($client, 1024, 0, $peer);
echo "Response: $response from $peer\n";

使用socket扩展实现

创建UDP服务器:

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '0.0.0.0', 9999);

while (true) {
    socket_recvfrom($socket, $buf, 1024, 0, $ip, $port);
    echo "Received $buf from $ip:$port\n";
    socket_sendto($socket, "ACK: $buf", strlen("ACK: $buf"), 0, $ip, $port);
}

创建UDP客户端:

$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$msg = "Hello UDP Server";
$len = strlen($msg);
socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 9999);
socket_recvfrom($sock, $buf, 1024, 0, $server, $port);
echo "Received $buf from $server:$port\n";

注意事项

UDP是无连接的协议,不需要建立连接即可发送数据 UDP不保证数据包的顺序和可靠性 适合对实时性要求高但允许少量丢包的应用场景 最大传输单元(MTU)通常限制在1500字节左右

标签: 通信php
分享给朋友:

相关文章

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…

php 插件实现

php 插件实现

PHP 插件实现方法 PHP 插件可以通过多种方式实现,具体取决于插件的用途和功能需求。以下是一些常见的实现方法: 使用钩子(Hooks)和过滤器(Filters) 钩子和过滤器是一种常见的插件架…

react组件之间是如何通信

react组件之间是如何通信

父子组件通信(Props) 父组件通过props向子组件传递数据或方法,子组件通过接收props实现数据或行为的更新。父组件定义props,子组件通过this.props(类组件)或直接解构(函数组件…