在PHP中接收UDP数据包数据报

2023-12-27

我正在用 php 为 GPS 跟踪系统构建监听服务器。 GPS 通过 UDP 数据包发送数据,我可以通过运行以下脚本来显示数据。然而,实际数据以符号形式出现,所以我猜我错过了转换

    //Reduce errors
    error_reporting(~E_WARNING);

    //Create a UDP socket
    if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
    {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);

        die("Couldn't create socket: [$errorcode] $errormsg \n");
    }

    echo "Socket created \n";

    // Bind the source address
    if( !socket_bind($sock, "192.168.1.29" , 1731) )
    {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);

        die("Could not bind socket : [$errorcode] $errormsg \n");
    }

    echo "Socket bind OK \n";

    //Do some communication, this loop can handle multiple clients
    while(1)
    {
        echo "\n Waiting for data ... \n";

        //Receive some data
        $r = socket_recvfrom($sock, $buf, 512, 0, $remote_ip, $remote_port);
        echo "$remote_ip : $remote_port -- " . $buf;

            //Send back the data to the client
        //socket_sendto($sock, "OK " . $buf , 100 , 0 , $remote_ip , $remote_port);

    }

    socket_close($sock);

我以前没有使用 PHP 这样做过,但我的第一个猜测是您将返回一个二进制字符串,您需要将其转换为 ASCII(或您正在使用的任何字符集)。

看起来你应该能够使用 PHPunpack http://php.net/unpack为了这。

如果不知道您要返回什么数据,则很难确切地知道提供包的格式。看起来 unpack 至少能够返回一个十进制值数组(假设您正在返回字符),然后您可以将其转换为 ASCII,使用chr http://www.php.net/manual/en/function.chr.php。可能是这样的:

//Receive some data
$r = socket_recvfrom($sock, $buf, 512, 0, $remote_ip, $remote_port);
//Convert to array of decimal values
$array = unpack("c*chars", $buf);
//Convert decimal values to ASCII characters:
$chr_array = array();
for ($i = 0; $i < count($array); $i++)
{
    $chr_array[] = chr($array[$i]);
}

这取决于协议设计,您对二进制数据的解析需要有多复杂(也就是说,您只是发送字符串数据,还是整数和字符串的混合等......您需要相应地解析二进制数据)。

EDIT:我已根据列出的格式使用数组元素名称“chars”更新了格式字符串以匹配无限数量的字符here http://php.net/pack.

EDIT:在代码示例中添加了一些基本的 ASCII 转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在PHP中接收UDP数据包数据报 的相关文章

  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • PHP7构造函数类名

    我有一个 Laravel 4 2 应用程序 它可以与 PHP5 一起使用 没有任何问题 由于我安装了一个运行 PHP7 的新 vagrant box 一旦我运行一个模型 其中函数名称与类名称 关系函数 相同 就会出现错误 如下所示
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • 为什么 PHP 中不允许“传统”类型提示?

    刚刚发现类型提示 http php net manual en language oop5 typehinting phpPHP 中允许 但不适用于整数 字符串 布尔值或浮点数 为什么 PHP 不允许对整数 字符串等类型进行类型提示 从 P
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • 在 PHP 中模拟 jQuery.ajax 请求

    我必须在 PHP 中模拟 AJAX 请求 就像在 jQuery 中一样 我当前的代码在这里 原始 AJAX 调用 不得修改 ajax type POST url someFile php data data success function
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩
  • PHP - 扩展 __construct

    我想知道你是否可以帮助我 我有两个类 一个扩展了另一个 B 类将由各种不同的对象扩展 并用于常见的数据库交互 现在我希望 B 类能够处理其连接和断开连接 而无需来自 A 类或任何外部输入的指示 据我了解 问题是扩展类不会自动运行其 cons
  • 包含包含文件的 php 文件

    这是目录结构 global php includes class bootstrap php includes init php plugins myplugin php 这是这些文件中的代码 start php require inclu
  • jquery上传完成后重定向到新页面

    我正在尝试让这个 jquery 工具与我的网站一起使用以进行文件上传 https github com blueimp jQuery File Upload https github com blueimp jQuery File Uplo
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • Laravel 5.4 升级 - 违反完整性约束 - 列不能为空

    奇怪的是 所有这些都在 5 2 中工作 但我不知道可以改变什么来实现这一点 下面是错误和正在插入的数组 SQLSTATE 23000 Integrity constraint violation 1048 Column gender can
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • 尝试获取 Google accessToken

    看起来 无论我做什么 谷歌都在竭尽全力阻止我完成这个研究项目 我的项目让我使用 Google 电子表格作为数据库 并使用所述电子表格中的数据执行程序化的 Google 图片搜索 并向最终用户显示一些结果 设置说明 我开始按照此处的说明进行操
  • 如何在 Twitter Card 中传递动态图像路径?

    我在用
  • 简单的dom php解析获取自定义数据属性值

    HTML div class something ddsf PHP foreach dom gt find something data rel as this var dump this gt attr 我尝试了这个但错误 在其文档中找不
  • 使用 fopen() 包装器创建 ZIP 文件

    如何使用以下命令创建 ZIP 文件fopen 包装器 http es php net manual en wrappers compression php 这显然是not道路
  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records

随机推荐

  • 使用 github v3 API 删除标签

    我可以通过以下方式使用 GitHub v3 API 创建带注释的标签他们的方向 http developer github com v3 git tags 我创建标签对象 然后创建引用对象 那里一切都很好 我可以删除参考像这样 curl X
  • 跨浏览器的日期不一致 - MVC 5 模型中的日期

    我在视图模型中有这个 Required Display Name Date of birth DataType DataType Date DisplayFormat DataFormatString 0 dd MM yyyy ApplyF
  • 使用 nx.draw_graphviz 在 python 中的 graphviz 布局中绘制图形会出现错误

    我正在尝试在python的networkx中的graphviz布局中绘制100个节点的多图G 所以到目前为止我做了两次试验 Trial 1 nx draw graphviz https networkx github io document
  • cordova Phonegap 在应用程序中使用外部网页,同时维护页眉/页脚(用于导航)

    到目前为止 我已经尝试过 inappbrowser 和 iframes iframe 可以工作 但我在使用 iframe 的实现中遇到了一些破坏应用程序的错误 是否有一种更类似于本机的解决方案可以在phonegap内显示外部网页 同时仍然保
  • Android 后退按钮无法返回到上一个 Activity

    我有一个有两个活动的应用程序 MainActivity 和 SettingsActivity MainActivity 有一个菜单 其中有一个 设置 菜单项 单击此菜单项时 它会有意启动 SettingsActivity 活动启动后 我单击
  • 如何避免独立android服务中的ANR

    您好 感谢您的帮助 我想将 java 系统移植到 Android 并且我想通过透明的独立服务将其提供给第三方应用程序 因此它将类似于系统库 该系统是一个 VoiceXML 解释器 它将解释由第 3 方应用程序处理的文档并将结果发送回它 这些
  • iPhone4 960x640 - 对应用程序有影响吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何适配iPhone 4不同的屏幕分辨率 https stackoverflow com questions 2992360 how to accommodate for the different
  • 来自 Java 的 CloudFlare(会员)post 请求产生 403 错误

    我正在尝试使用 Spring Boot 应用程序中的 Memberful 对用户进行身份验证 根据会员文档 https memberful com help integrate advanced oauth authorization co
  • Rails -TypeError:无法将 ActionController::Parameters 转换为文本

    我正在开发一个网站 使用 jQuery Preview 来获取任何链接的标题 描述或 favction url jQuery 预览 https github com embedly jquery preview https github c
  • 从多个 MPI 输出组成 VTK 文件

    对于盖驱动腔 CFD 的格子玻尔兹曼模拟 我将立方域分解为 也是立方 8 个子域 这些子域按 8 个等级独立计算 每个 MPI 等级都会为每个时间步生成一个 VTK 文件 并且由于我使用的是 ParaView 所以我希望将整个事物可视化为一
  • 直播视频延迟

    尝试确定造成延迟的 最大 原因 我的视频从编码器到服务器的往返行程 然后返回到浏览器中的播放器 我现在和我喜欢的球员的距离大约是 12 秒 它在我的播放器中缓冲吗 FMLE 退出时缓冲 我问的原因是我觉得我已经通过下面概述的小测试场景消除了
  • 使用 CSS 在嵌套 div 上重复一组颜色

    我有一组四种颜色 我想将它们应用到嵌套的 div 所以接下来的每个孩子都有不同的颜色 如果有第五层嵌套 我想从第一种颜色开始 并继续进行 即使我有无限深的嵌套 这是否可以仅使用 CSS 选择器来完成 避免 JavaScript 我目前陷入了
  • 如何在没有证书的情况下将 HTTPS 请求重定向到 HTTP (Apache VirtualHosts) 并避免证书警告

    我首先想说 这不是一个好的做法 我们应该努力让所有内容 100 都在 HTTPS 上 但在这种情况下 我对不保存敏感信息的系统提出了一系列尴尬的要求 当我还是初级学生的时候 当我问这个问题时 我对 HTTPS TLS 的工作原理一无所知 但
  • 使用CSS更改当前页面的链接颜色

    当前页面的一种样式链接与其他样式有何不同 我想交换文本和背景的颜色 li a color A60500 li a hover color 640200 background color 000000 ul li class a a href
  • 如何在ANTLR4中实现错误处理

    我有以下语法用于解析应用于图形的一阶逻辑公式 grammar Graph PARSER RULES input formula EOF formula TRUE FALSE formula AND formula formula OR fo
  • 搭建 dbcontext 时出现不明确的列名“name”错误

    我正在尝试从现有数据库构建脚手架 但该数据库有多个具有多个模式的表 并且某些表具有相同的名称但在不同的模式中 我 认为 这是我的问题的根源 我想知道您是否已经遇到过类似的情况吗 例如mySchema1 contacts and mySche
  • 如何从字符串中查找斜杠出现的次数

    如何使用 Excel VBA 宏查找字符串中正斜杠字符 的出现次数 老问题 但我想我会通过在 Excel 论坛上找到的答案来提高答案的质量 显然计数也可以使用找到 count Len string Len Replace string 答案
  • NodeJS:如何从文件中读取(最多)前 N 个字节?

    在 NodeJS 中 从文件中最多读取前 N 个字节的简洁 健壮且优雅的方法是什么 如果数据较少 那么我不希望抛出错误 如果有更多数据 那么我不希望将其读入内存 理想情况下无需安装外部软件包 也许涉及自 NodeJS 12 以来似乎是新的
  • 服务器在rails 3生产环境中找不到公用文件夹

    我正在使用最新的 Rails 3 beta 该应用程序在开发模式下工作正常 但是当我通过以下方式在生产模式下启动服务器时rails server e production 似乎public找不到文件夹 我收到如下错误消息 ActionCon
  • 在PHP中接收UDP数据包数据报

    我正在用 php 为 GPS 跟踪系统构建监听服务器 GPS 通过 UDP 数据包发送数据 我可以通过运行以下脚本来显示数据 然而 实际数据以符号形式出现 所以我猜我错过了转换 Reduce errors error reporting E