本机应用程序和 chrome 扩展之间的连接在一段时间后中断

2024-02-12

我正在使用 chrome 本机消息传递 api 在我的 chrome-extension 和用 c++ 编写的 native-windows-app 之间进行通信。

连接建立良好,数据也得到交换。但是,在从扩展程序对本机应用程序进行随机数量的调用后,连接就会中断。

我尝试独立运行本机应用程序,并且在无限循环中运行时工作正常(没有异常发生)。

我的本机应用程序在第一次调用时生成近 300KB 的数据(编码帧()),然后连续调用(每 300 毫秒)生成 0 到 300KB 的数据(编码帧差异())。数据采用 Base64 编码。

仅供参考:本机应用程序和扩展之间通过 stdin 和 stdout 进行通信。

问题是我无法弄清楚为什么连接在一段时间后会中断。

这里是本机应用程序代码: windows-native-app-cpp http://pastebin.com/bitGSpEw

这里是扩展代码: chrome 扩展 js http://pastebin.com/fLtQTxCC

任何帮助,将不胜感激!

谢谢。

EDIT: 到目前为止,我发现我发送的某些长度的数据存在问题。

例如。如果 JSON 长度在 2560 到 2815 之间,它将停止工作。而对于像 2816 或 6656 这样的 JSON 长度它是有效的。


我从 chromium-extension 小组得到了这个,它对我有用。

粘贴完全相同:

问题可能出在包含四字节长度的消息的标头中。如果很奇怪,Chrome 就会中断连接。由于 stdout 默认处于文本模式,因此某些 ASCII 字符可能会在 Windows 上转换为不同的字符,例如 \n 变为 \r\n。最终标头中​​的字节数超出了您的需要,因此 Chrome 扩展程序会认为您正在发送数百万字节的数据,从而感到困惑并中断连接,并且某些标头字节会渗入消息中,从而导致JSON 解析器遇到意外字符。

尝试将 stdout 设置为二进制模式:

_setmode(_fileno(stdout), _O_BINARY);

如果这没有帮助,您还可以尝试这种写入标准输出的替代方法:

unsigned int len = final_msg.length();
fwrite(&len, 4, 1, stdout);
printf("%s", final_msg.c_str());
fflush(stdout);

您可能需要添加一些包含: fcntl.h io.h

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

本机应用程序和 chrome 扩展之间的连接在一段时间后中断 的相关文章

  • 在移动网站中处理 iPhone 事件(如向左滑动)

    iPhone 浏览器是否有可以使用 Javascript 挂钩的特殊事件 例如 如果用户向左滑动 我想执行某个操作 如果有类似的活动 很高兴看到所有这些活动的参考 理想情况下 有一天所有触摸屏移动浏览器都会有一个标准 您可以访问多点触控事件
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • Onblur 事件在另一个 div 的 onclick 之前触发

    如上所述 我有一个按钮 单击该按钮将打开子菜单 对于子菜单中的每个选项 都有三个元素 我认为实际上还有更多元素 但为了简单起见 将其保留为 3 我将焦点放在子菜单的主 div 白色 框架 上 Onblur 这个 div 然后我隐藏子菜单 这
  • 如何显示 GroupList 的 FormArray?

    我正在尝试制作一个交互式表单 在每一行上列出一个项目以及一个删除按钮 在我的示例中称为 verwijderen 这些项目是从数据库中检索的 并且每个项目都实例化为名为的自定义对象LaborPeriod 然后这些对象被转化为FormGroup
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • Angular 停止 Enter 键提交

    I am trying to stop the Enter from submitting my button and rather make it point to another function I tried trapping th
  • Babel/RequireJS + typeof“RangeError:超出最大调用堆栈大小”

    我有一个非常基本的 JS 错误 我很羞愧无法解决它 我正在使用 ES6 和 Babel 进行开发 并且正在做一些实验 请注意 我在 Babel 中使用了这些参数 presets es2015 plugins transform es2015
  • 动态 dom 操作后,如何在浏览器历史记录中保留 dom 状态?

    是否有一个通用的解决方案来保留 dom 状态 以便当用户使用后退 前进返回页面时 整个页面处于他们离开时的确切状态 这篇文章询问并回答了为什么不同浏览器和不同 javascript 库的行为不一致 Ajax 后退按钮和 DOM 更新 htt
  • 在firefox上用js改变表单方法

    我需要使用 javascript jQuery 或纯 更改表单的方法属性 我的表单有 method post 我尝试用以下方法更改它 submit button click function var url input id url val
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 使用 HTMLAgilityPack 从节点的子节点中选择所有

    我有以下代码用于获取 html 页面 将网址设置为绝对 然后将链接设置为 rel nofollow 并在新窗口 选项卡中打开 我的问题是关于将属性添加到 a s string url http www mysite com string s
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • 这个 JQuery 指令做什么 $(function(){...}) [重复]

    这个问题在这里已经有答案了 我最近一直在研究JQuery 尽管我知道一些东西 但书上有这样一句话我根本无法理解 function current entry 1 有谁知道这条线是如何工作的以及它的作用是什么 它类似于 JQuery 函数中的
  • C++、三元运算符、std::cout

    如何使用 C 用三元运算符编写以下条件 int condition1 condition2 condition3 int double result int or double std cout lt lt condition1 resul
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段

随机推荐

  • Rcpp 中的折叠向量

    我有一个 Rcpp 函数 它给我一个结果列表 其中包含一些字符串向量 std vector 1 1 0 1 0 0 0 0 2 1 0 0 0 0 0 1 3 1 0 1 0 0 0 0 4 1 0 0 0 1 0 0 我想得到这样的东西
  • React (CRA) Service Worker 缓存“公共”文件夹

    执行 create react app 并启用 Service Worker 后index js 来自的所有相关文件src文件夹被缓存 然而我的一些资源位于public目录 当我跑步时npm run build the asset mani
  • 如何在 Django 中使用 toastr 来显示成功或失败消息

    我一直在使用 Django 消息框架来显示应用程序中的成功或失败消息 但我希望 UI 良好 所以我发现 toastr 是向用户显示消息的好方法 但我不知道如何使用它 请引导我完成这个过程 下面的函数将用户保存到数据库 当保存用户信息时会显示
  • 基于 Mysql Case 语句将一张表连接到另一张表

    我有一张桌子叫PublicForum4 个不同的用户可以发布到 在这个表上我有 2 个字段称为AuthorId int and AuthorType Enum 显示用户 ID 以及哪个用户撰写了该帖子 现在我想选择全部PublicForum
  • Android 布局权重%

    我正在尝试摆弄 Android 布局权重属性 我想要一个具有 3 个子布局 的垂直布局 第一个将占用 25 的空间 第二个将占用 50 最后一个将占用 25 的空间 当我尝试添加到最后一个布局时 一切都不起作用 每个布局的权重应该是多少 我
  • ListView LayoutTemplate 在为空时不显示 asp.net

    我有一个
  • 如何在 ReactJs 中调用另一个类的函数

    我有两个课程 俱乐部 俱乐部和主要应用程序课程 在俱乐部课程中 我收到一份俱乐部列表 并将它们显示在 ul 列表 在里面club类我正在尝试从俱乐部列表中获取单击项目的详细信息 关键是我不知道如何调用中存在的详细函数club类在clubs
  • 将自然语言问题转换为 SQL 查询 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想使用 opennlp Java 库将自然语言问题转换为 SQL 查询 即 谁赢得了索契女子花样滑冰比赛的冠军 应转换为 selec
  • 为什么使用 IDENTITY_INSERT 的 EF 插入不起作用?

    这是查询 using var db new AppDbContext var item new IdentityItem Id 418 Name Abrahadabra db IdentityItems Add item db Databa
  • 如何在Windows Phone 8中设置背景图片?

    我很新WP应用程序 不知道如何设置back ground图像在app xaml整个申请文件在Windows Phone 8应用程序 到目前为止 我已经放置了一些controls超过它但无法设置背景图像 我看过一些材料 但没有用 任何帮助将不
  • 终止另一个应用程序的运行 - Cocoa

    如何终止在酷卡中运行的另一个应用程序 假设我正在运行 iTunes 并且我在应用程序中输入 quit 它将退出 iTunes iTunes 只是一个例子 它可以是用户想要的任何东西 我可以从我的应用程序中打开任何应用程序 但我想知道如何关闭
  • 查找不包含所选字符串的文件

    我正在尝试查找不包含选定字符串的所有文件 查找包含的文件很容易 gci select string something 但我不知道如何否定这个说法 您可以使用Where Object gci Where Object Select Stri
  • 如何 Mockk Kotlin 顶级函数?

    Mockk https mockk io允许模拟静态函数 但是如何模拟 Kotlin 顶级函数呢 例如 如果我有一个名为HelloWorld kt 我如何嘲笑sayHello 功能 HelloWorld kt fun sayHello He
  • 为什么更新 VSCode 后出现此错误?无法读取...的源映射(Node.js)

    我的程序在更新之前可以运行视觉工作室代码 更新后 为什么会出现这个错误 Could not read source map for file c Users s aytan Desktop node new Dashboard2 node
  • AngularJS 子目录路由不起作用,应用了 标签

    我有一个非常简单的 AngularJS 模板 我正在尝试让路由正常工作 但是当我加载页面时 我只看到我的 H1 标签index html 我的应用程序位于子目录中 angular route 并且我知道部分存在 我可以访问 angular
  • Ravendb 计数查询

    我需要获取特定集合中的文档计数 现有索引 Raven DocumentCollections 存储与属于该集合的实际文档配对的集合的计数和名称 如果可能的话 我想从这个索引中获取计数 这是 Raven Document Collection
  • 动态设置水晶报表仍然要求数据库登录

    我正在尝试部署Crystal Reports in my MVC应用 为了充分利用 Crystal Report Viewer 我必须使用webform 它在我的开发环境中运行得相当好 该应用程序将部署在用户的服务器上并连接到他们的个人数据
  • 为什么“break”在结束“循环”时不需要分号?

    摘自第3 5章 https doc rust lang org book ch03 05 control flow html returning values from loops 生锈之书 的内容 我们使用break带有值的关键字coun
  • 仅选择数字列进行替换

    我有一个数据框 其中包含一些数字列 一些整数列和一些因子列 我正在尝试将数据框转换为仅对数字列进行平方 但解决方案这个线程 https stackoverflow com questions 5863097 selecting only n
  • 本机应用程序和 chrome 扩展之间的连接在一段时间后中断

    我正在使用 chrome 本机消息传递 api 在我的 chrome extension 和用 c 编写的 native windows app 之间进行通信 连接建立良好 数据也得到交换 但是 在从扩展程序对本机应用程序进行随机数量的调用