使用 php 使用 socket_write 发送大数据包

2023-12-04

我正在尝试将图像编码为 base64 编码并将其发送到我正在创建的 C++ 服务器。我正在使用 PHP 来做到这一点。

因此,PHP代码是客户端,C++代码是监听服务器。

该问题出现在大图像上;例如 70KB 图像。它在小图像上工作正常;比如5KB。

发生的错误是:警告:socket_write() [function.socket-write]:无法写入套接字 [0]:在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或者用于接收数据报的缓冲区小于数据报本身。

如果不将图像分成几个小数据包,是否可以解决这个问题?

我只需要发送数据包为1MB。

这是我正在使用的代码:

$con=file_get_contents("image url");
$binary_data=base64_encode($con);
$host = "192.168.35.54";
$port = 1060;
$message = $binary_data;
// No Timeout 
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP) or die("Could not create socket\n");
socket_connect($socket, $host, $port) or die("Could not connect to server\n");
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");

您可能会遇到许多问题。我假设你正在使用 TCP。我还假设您在一次调用 socket_write 中写入整个图像。我的第一个猜测是问题出在接收方。当您在接收端读取套接字时,不能保证一次读取即可获取整个数据块。通常,在读取 TCP 套接字时,您会循环读取并以这种方式累积数据,直到获得所需的所有数据,否则会出现错误。

您可以在其他 SO 帖子中看到一些示例代码:

从套接字读取:是否保证至少获取x字节?

EDIT

看到这些附加详细信息后,我的第一个建议是切换到 TCP。您可以以这种方式执行一次发送,然后在接收端循环读取,如上面的示例代码所示。否则,您将不得不分解数据包,并构建自己的错误检测代码以确保所有部分都到达,再加上放入序列代码以按顺序重新组装它们,这基本上只是复制 TCP 的一堆功能提供。

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

使用 php 使用 socket_write 发送大数据包 的相关文章

  • 如何在 Microsoft 报告中显示字节数组中的图像

    我使用报表文件和 ReportViewer 控件来显示在运行时从对象动态加载数据的报表 我需要显示一个以字节数组形式存储在对象中的图像 PictureBox 的值当前设置为 First Fields ImageData Value dtst
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 为什么验证不起作用并跳转到另一个页面?

    我写了一个customer display php来验证数据 到目前为止只有名字 但无论名字字段是否为空 网页都会跳转到customer search php并且没有更改数据库中的信息 为什么
  • 如何使用 Twig 的属性函数访问嵌套对象属性

    我试图使用一个树枝变量来访问另一个树枝变量的属性 直到我找到 属性 函数为止 该变量才起作用 除了需要访问嵌套属性的情况外 效果很好 当包含属性的变量实际上是对象 属性时 它不起作用 例如 attribute object1 variabl
  • 将 Google 信任徽章添加到 Magento

    我正在尝试将 Google Trust Badge 添加到我的 magento 商店 我尝试在 Magento 网站上搜索扩展程序 但找不到 我是否需要将以下代码粘贴到产品和结账页面 还是必须对其进行更改 如果有人能引导我走向正确的方向 我
  • 如何在 yii2 中使用两个不同的模型登录或切换身份类别?

    我想允许用户从两个不同的模型登录 配置文件 user gt identityClass gt app models User one more class here enableAutoLogin gt false authTimeout
  • 当我使用 Image.FromFile() 时 FileNotFound

    我在这种情况下使用 Image FromFile string 方法 using System using System Collections Generic using System ComponentModel using Syste
  • 使用php将数据存储到文本文件中?

    我正在尝试将数据存储在文本文件中 例如使用 php 将数组存储到文本文件中 而不是存储到 mysql 数据库中 例如 这里是要存储在文本文件中的数据 name gt john age gt 25 location gt australia
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • postgreSql 中特定时间后表更新

    我已经在 postgres 中创建了表 现在我想在特定时间 例如 1 小时 后更新一行 我看到很多问题 例如 https dba stackexchange com questions 56424 column auto updated a
  • phpunit测试调用其他需要mock的类方法的方法

    我正在尝试创建一个非常标准的单元测试 在其中调用一个方法并断言它的响应 但是我正在测试的方法调用同一类中的另一个方法 该方法做了一些繁重的工作 我想模拟该方法 但仍按原样执行我正在测试的方法 仅使用从调用另一种方法返回的模拟值 我简化了示例
  • 如何使使用 css 调整大小的图像在 IE 中看起来不错?

    当使用 css 宽度 高度或属性宽度 高度缩放图像时 IE6 和 IE7 无法很好地缩放网页中的图像 我不确定它默认使用哪种算法 但这不好 在这些浏览器中缩放时 缩放图像会显示锯齿伪影 幸运的是 有一种方法可以通过简单的 css 规则强制
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2

随机推荐

  • 库“dart:isolate”中是否有 dart 的 `spawnUri(...)` 示例?

    有一个spawnUri uri 函数于dart isolate 但我没有找到任何例子 我猜到了它的用法 但失败了 假设有2个文件 在第一个文件中 它会调用spawnUri对于第二个 并与之沟通 首先 dart import dart iso
  • 验证 JTextField 值,使其以“RA”开头,然后有 8 位数字

    我有一个JTextField用户必须在其中输入数据 它的价值必须始终从RA并且后面必须正好有 8 位数字 因此 它的长度始终为 10 例如 RA12345678 我如何在 Java 中执行此操作 我尝试使用MaskFormatter and
  • 如何检测哪个 EKevent 被更改

    我遇到问题了 我需要知道 EventStore 中的事件何时发生更改 因此对于本例我使用EKEventStoreChangedNotification但这个通知给我带来了难以理解的字典userInfo它看起来像这样 EKEventStore
  • python加密模块中的错误:_RSAPrivateKey'对象没有属性'sign

    在我的 Python 代码中 我使用密码学模块 我的磁盘上有一个私钥 所以 根据文档 我使用了这个例子加载该密钥 然后使用该密钥对消息进行签名 但运行程序会抛出 AttributeError RSAPrivateKey 对象没有属性 sig
  • 学习正则表达式 (PHP) 的最佳地点是哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 学习正则表达式 PHP 的
  • 备份/恢复整个 Eclipse 工作区

    我开始学习Android操作系统 我还处于学习模式 在学习 Android 的同时 我似乎对 Java 有了一些了解 因为我发现的大多数示例都希望您使用 Eclipse 好吧 我想我也在学习 Eclipse 这是一件好事 我不是在抱怨 这个
  • Xamarin.Forms。 SwipeGesture 和 ScrollView 在 Android 上不能一起使用

    我将 Grid 与 SwipeGesture 和 ScrollView 一起使用 ScrollView 运行良好 但 SwipeGesture 不适用于 Android 在 iOS 中我没有问题 为什么 请帮帮我
  • UIDatePicker 语言环境什么都不做?

    我正在以编程方式创建 UIDatePicker 并使用以下代码设置其区域设置 datePicker locale NSLocale alloc initWithLocaleIdentifier es ES autorelease 日期选择器
  • 在 iOS 设备上查找正确的时间

    我想找出 iOS 设备上的正确时间 即使用户手动设置了错误的时间 在设置 gt 常规 gt 日期和时间中 有自动设置选项 如果用户取消选中该选项 那么我如何以编程方式找到正确的时间 使用 NTP 协议获取当前时间或从服务器提供时间并在应用程
  • 使用foldl 和foldr 反转Scheme 中的列表

    如何定义一个函数来反转Scheme中的列表 方法是使用foldr and foldl 我们想要的是一个简洁的解决方案 使用foldl调用并使用不同的解决方案foldr调用 定义为 define foldl operation lst ini
  • QtGui.QTextEdit 根据线条包含的文本设置线条颜色

    这是我第一次使用 stackoverflow 来寻找问题的答案 我正在使用 QtGui QTextEdit 来显示类似于下面的文本 并希望根据某些行是否包含某些文本来更改文本的颜色 以 开头的行将为蓝色 包含 ERROR 的行将为红色 我目
  • 带有包含查询的 JPA 转换器

    我的 Spring Boot 应用程序中的特定查询遇到了一些问题 我正在使用 Spring 的内置文本加密来加密数据库中的文本 我有一个名为 BookRecord 的实体 Entity Table name books EntityList
  • 使用 Spring JPA 存储库和查询 DSL 进行动态投影

    我目前有一个 Spring JPA 存储库继承QuerydslPredicateExecutor and JpaRepository 我正在使用Page
  • PyQt4.QtCore.QVariant 对象而不是字符串?

    我按照这个例子键 值 pyqt QComboBox 使用下面的代码将 ID 值存储到组合框项 self combox widget addItem Apples Green indx self combox widget currentIn
  • java.lang.ClassNotFoundException:org.springframework.core.ResolvableTypeProvider [重复]

    这个问题在这里已经有答案了 我已经编写了一个 Spring 带注释的调度程序程序 但是当我执行它时 它会在帖子标题中给出错误消息 SchedulerConfig java import java util concurrent Execut
  • .net (C#) 中的模拟并通过 Process.start 打开文件

    你好 我正在使用以下方法进行一些模仿LogonUser正如许多地方所解释的那样 我使用了引入的很棒的类库here 但原理似乎全网都是一样的 我成功地模仿并去了我的 普通 用户无法到达的地方 但是当我尝试以编程方式打开一个doc文件 或txt
  • PowerShell - 启动进程和命令行开关

    我可以很好地运行 msbuild C WINDOWS Microsoft NET Framework v3 5 MSBuild exe start process msbuild wait 但是当我运行这段代码 如下 时 我收到错误 msb
  • 禁用keras或tensorflow输出[重复]

    这个问题在这里已经有答案了 我知道 stackoverflow 上已经有一些类似的问题 但没有一个解决我的问题 在 python 脚本中 我必须多次训练 keras 模型 并且我想在 GPU 支持下完成此操作 每次我在输出控制台中看到一堆行
  • Linux 32 位机器上程序的堆栈分配限制

    在 C 中 在编译器放弃并表示无法为堆栈分配更多内存之前 堆栈段可以增长多少 在 linux fedora 32 位机器上使用 gcc 在 UNIX 下 如果您正在运行 bash 请运行 ulimit a 它将列出各种限制 包括堆栈大小 我
  • 使用 php 使用 socket_write 发送大数据包

    我正在尝试将图像编码为 base64 编码并将其发送到我正在创建的 C 服务器 我正在使用 PHP 来做到这一点 因此 PHP代码是客户端 C 代码是监听服务器 该问题出现在大图像上 例如 70KB 图像 它在小图像上工作正常 比如5KB