作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Chrome 扩展使用原生消息接收 json 数据:
var port = chrome.runtime.connectNative('company.my_application');
port.onMessage.addListener(function(result) {
console.log(result);
});
在我的C++程序中,如果我发送一个json字符串str1[]
,扩展可以接收到它,但是如果我发送str2[]
,扩展就接收不到它.这个字符串有问题吗?
str2[]
代表一个长字符串,是一个正确的Json数据,但是不能被扩展接受。
有没有人遇到同样的问题并解决了?
char str1[]="{\"Func\":\"test\",\"msg\":\"hello\"}";
char str2[]="{\"Func\":\"test\",\"msg\":\"3c476c6f62616c4a53206d6f64756c6549643d226f7261636c652e6f6174732e736372697074696e672e6d6f64756c65732e616466223e3c215b43444154415b2f2a2061616161616161616161616161616161612061616161616161612061616161616161616161206161616161202a2f262378443b262378413b262378443b262378413b616161616161616120616161616161616161616161616161616161616161616161616161612861612c6161616161297b262378443b262378413b096161617b262378443b262378413b090961616120616161613d61616161616161286161293b262378443b262378413b09096161616161203d206161616161616161286161616161293b262378443b262378413b0909616128276161616161273d3d6161616161616161616161616161616161616161616161616161616161612861612c27616161616161616161616161616161616120616161616161616161616161616161616161616161616161616161612729297b262378443b262378413b09090961616120616161616161616161613d2861616161613d3d616161613f27273a6161616161293b262378443b262378413b09090961616120616161613d616161612e6161616161616128293b262378443b262378413b09090961616120616161616161616161616161203d20616161612e5f6161616161616161616161616161612861616161293b262378443b262378413b090909616120286161616161616161616161612e61616161612e616161616161613d3d22616161616122297b262378443b262378413b090909096161616161616161616161612e616161616128293b262378443b262378413b0909097d262378443b262378413b090909616161612e5f6161616161616161616161616161616161612861616161292e6161616161203d20616161616161616161613b262378443b262378413b090909616161612e5f616161616161616161616161616161616161616161286161616161616161616161612c2061616161616161616161293b262378443b262378413b0909096161616161616161616161612e6161616128293b262378443b262378413b09097d616161617b262378443b262378413b0909096161616161616161616161616161616161612e6161612827616161616161616161616161616161616120616161616161616161616161616161616161616161616161616161612061616161616161616120616120616161612061612061616161616161612061612061616161616161612e2e2e2e61613a272b61612c6161616161616161616161616161616161612e61616161615f6161616161293b262378443b262378413b09097d0909262378443b262378413b202020207d616161616128616161297b262378443b262378413b20202020096161616161616161616161616161616161612e6161612827616161616161616161616161616161616120616161616161616161616161616161616161616161616161616161612061616161613a272b6161612e61616161616161616161612b272e2e2e2e61613a272b61612c6161616161616161616161616161616161612e61616161615f6161616161293b262378443b262378413b202020207d262378443b262378413b7d262378443b262378413b262378443b262378413b2f2a206161616161616161616161616161616161206161616161616161206161616161616161616120616161202a2f262378443b262378413b5d5d3e3c2f476c6f62616c4a533e\"}";
我正在尝试按如下方式发送长度和消息:
size_t len = strlen(str2);
cout.write(str2, len);
fflush(stdout);
我使用这些方式来发送长度:
cout.write((char*)&len, 4);
putchar ((( char *) &len) [0]);
putchar ((( char *) &len) [1]);
putchar ((( char *) &len) [2]);
putchar ((( char *) &len) [3]);
putchar(char(((len >> 0) & 0xFF)));
putchar(char(((len >> 8) & 0xFF)));
putchar(char(((len >> 16) & 0xFF)));
putchar(char(((len >> 24) & 0xFF)));
最佳答案
你应该使用
unsigned int len = strlen(str2);
代替
size_t len = strlen(str2);
native messaging协议(protocol)要求消息前面有一个 32 位整数,而 size_t
的位大小取决于实现。例如,在我的 64 位系统上,sizeof(size_t)
是 8(字节)。
关于c++ - 使用 NativeMessaging 的 Chrome 扩展无法接收某种 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903888/
看来 Nativemessaging 的协议(protocol)意味着 native 应用程序通过阻止先读后写循环与扩展进行通信。 首先,这是正确的吗? 如果是这样,那么就很难在双方之间建立双向异步通
我正在尝试使用 runtime.connectNative 和 postMessage 实现 chrome 扩展。我正在关注 chrome documentation , 下载了 native mes
Chrome 扩展使用原生消息接收 json 数据: var port = chrome.runtime.connectNative('company.my_application'); port.
我是一名优秀的程序员,十分优秀!