如何在Chrome原生消息传递扩展的本机应用程序中使用本机主机消息
How to use Native Host Message in Native Application For Chrome Native Messaging Extension
我正在开发带有本机主机消息传递的Chrome扩展程序。我无法在主机应用程序中使用消息文本。从建立连接到在扩展中获得响应,一切正常。我需要在我的应用程序中使用消息文本,以便在简单文本数据类型(字符串/字符)中进一步使用/执行。我知道消息是 UTF8 编码形式,我试图解码但仍然遇到问题,有人可以帮助我吗?
当我解码消息时,chrome扩展控制台显示错误:"与本机消息传递主机通信时出错",如果我在"cout"之后使用该消息文本,则会出现相同的错误,则会出现"与本机消息传递主机通信时出错"。直接发送和接收消息对我来说效果很好。
代码是这样的:
std::string mycode(std::string data){
data= data+"abc"; //changing text to any thing.
cout<< data;
anotherFunction(data);//killing processes using string data
}
int main(int argc, char* argv[])
{
std::cout.setf( std::ios_base::unitbuf );
while (true)
{
unsigned int ch, inMsgLen = 0, outMsgLen = 0;
std::string input = "", response = "";
std::cin.read((char*)&inMsgLen, 4);
if (inMsgLen == 0)
{
break;
}
else
{
for (int i=0; i < inMsgLen; i++)
{
ch = getchar();
input += ch;
}
}
response.append("{"echo":").append(input).append("}");
outMsgLen = response.length();
std::cout.write((char*)&outMsgLen, 4);
std::cout << response;
cout<< input;
//using "input" variable for further user
mycode(input);
}
return 0;
}
错了
,你读过文档吗?试试这样的事情...
_setmode( _fileno( stdin ), _O_BINARY );
_setmode( _fileno( stdout ), _O_BINARY );
char cBuffer[65536] = {0};
while(true)
{
unsigned int uiSize = 0;
std::cin.read((char*)&uiSize, sizeof(unsigned int));
if(uiSize != 0 && uiSize < 65536)
{
memset(cBuffer, 0, 65536);
std::cin.read(cBuffer, uiSize);
std::string strIn(cBuffer);
std::string strOut = "{"result":"This is a Test"}";
uiSize = strOut.length();
std::cout << char(((uiSize>>0) & 0xFF));
std::cout << char(((uiSize>>8) & 0xFF));
std::cout << char(((uiSize>>16) & 0xFF));
std::cout << char(((uiSize>>24) & 0xFF));
std::cout << strOut.c_str();
}
else
break;
}
您需要将io设置为二进制,否则可能会发生这样的事情...如果存在值为 00011010 (CTRL ALT Z = 26) 的字节,它将被视为 EOF 并结束通信。:)
相关文章:
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 使用本机 C++ 应用程序中的 C# 代码
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- 它是否需要为webrtc本机应用程序中的每个对等体提供单独的rtc::Runnable线程和PeerConnection
- 用于创建使用XML中定义的GUI的C 本机应用程序的库
- 如何在本机 c++ 应用程序上通过 WP8 认证 6.5.1
- 安卓 |在Genymotion模拟器上调试本机应用程序
- 用于本机C++应用程序的GUI库
- 如何从终端为本机应用程序创建android项目
- 在Visual Studio 2015中调试本机应用程序加载的托管DLL
- 使用OpenCV 3.1在Android Studio 1.5中开发本机C++应用程序
- Tizen IDE中的本机应用程序:签名崩溃并打印奇怪的非ASCII字符
- Android本机应用程序命令行参数
- 如何将消息从Chrome扩展发送到本机应用程序
- 是否可以从本机应用程序调用 Java 代码
- 如何在Chrome原生消息传递扩展的本机应用程序中使用本机主机消息
- C#库到本机C++应用程序
- Label-BB10本机应用程序中允许的最大Qstring长度
- 我需要root权限才能在Android下执行本机应用程序
- 在本机应用程序中使用win32