无法连接:通信本机消息传递时出错

时间:2015-10-07 08:22:13

标签: google-chrome-extension google-chrome-app chrome-native-messaging

我有一个使用Chrome Native Messaging技术的应用!我的功能从浏览器获取消息有问题!当我有消息发送到Native Host时,消息是base64字符串,消息如下!我有一个从浏览器获取消息的功能,我有消息的长度,但我没有得到消息字符串。我的代码死在循环getchar中! Plz,帮我找到代码中的错误!我的功能怎么能得到这个消息?感谢

string OpenStandardStreamIn()
{
    std::cout.setf( std::ios_base::unitbuf );
    unsigned int c, t = 0;
    size_t pos = 0, m = 0;
    std::string inp;
    inp = "";
    t = 0;
    // Sum the first 4 chars from stdin (the length of the message passed).
    for (int i = 0; i <= 3; i++) {
        //t += getchar();
        t += (unsigned int)pow(256.0f, i) * getchar();
    }
    // Loop getchar to pull in the message until we reach the total
    //  length provided.
    for (int i = 0; i < (int)t; i++) {
        c = getchar(); // native host die this line code
        inp += c;
    }
    return inp;
}

从浏览器发送到本机主机的消息:  message = "77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxIU29UaHVlRFR1IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8va2VraGFpdGh1ZS5nZHQuZ292LnZuL1RLaGFpVGh1ZSI+DQoJPEhTb0toYWlUaHVlPg0KCQk8VFRpbkNodW5nPg0KCQkJPFRUaW5EVnU+DQoJCQkJPG1hRFZ1PkhUS0s8L21hRFZ1Pg0KCQkJCTx0ZW5EVnU+SFRLSzwvdGVuRFZ1Pg0KCQkJCTxwYmFuRFZ1PjMuMy40PC9wYmFuRFZ1Pg0KCQkJCTx0dGluTmhhQ0NhcERWdT48L3R0aW5OaGFDQ2FwRFZ1Pg0KCQkJPC9UVGluRFZ1Pg0KCQkJPFRUaW5US2hhaVRodWU+DQoJCQkJPFRLaGFpVGh1ZT4NCgkJCQkJPG1hVEtoYWk+MDc8L21hVEtoYWk+DQoJCQkJCTx0ZW5US2hhaT5U4bucIEtIQUkgVEhV4bq+IEdJw4EgVFLhu4ogR0lBIFTEgk5HIChN4bqrdSBz4buRIDA0L0dUR1QpPC90ZW5US2hhaT4NCgkJCQkJPG1vVGFCTWF1PihCYW4gaMOgbmgga8OobSB0aGVvIFRow7RuZyB0xrAgc+G7kSAxNTYvMjAxMy9UVC1CVEMgbmfDoHkgMDYvMTEvMjAxMyBj4bunYSBC4buZIFTDoGkgY2jDrW5oKTwvbW9UYUJNYXU+DQoJCQkJCTxwYmFuVEtoYWlYTUw+Mi4xLjA8L3BiYW5US2hhaVhNTD4NCgkJCQkJPGxvYWlUS2hhaT5DPC9sb2FpVEtoYWk+DQoJCQkJCTxzb0xhbj4wPC9zb0xhbj4NCgkJCQkJPEt5S0toYWlUaHVlPg0KCQkJCQkJPGtpZXVLeT5NPC9raWV1S3k+DQoJCQkJCQk8a3lLS2hhaT4wOS8yMDE1PC9reUtLaGFpPg0KCQkJCQkJPGt5S0toYWlUdU5nYXk+MDEvMDkvMjAxNTwva3lLS2hhaVR1TmdheT4NCgkJCQkJCTxreUtLaGFpRGVuTmdheT4zMC8wOS8yMDE1PC9reUtLaGFpRGVuTmdheT4NCgkJCQkJCTxreUtLaGFpVHVUaGFuZz48L2t5S0toYWlUdVRoYW5nPg0KCQkJCQkJPGt5S0toYWlEZW5UaGFuZz48L2t5S0toYWlEZW5UaGFuZz4NCgkJCQkJPC9LeUtLaGFpVGh1ZT4NCgkJCQkJPG1hQ1FUTm9pTm9wPjEwMTA5PC9tYUNRVE5vaU5vcD4NCgkJCQkJPHRlbkNRVE5vaU5vcD5DaGkgY+G7pWMgVGh14bq/IFF14bqtbiDEkOG7kW5nIMSRYTwvdGVuQ1FUTm9pTm9wPg0KCQkJCQk8bmdheUxhcFRLaGFpPjIwMTUtMDktMjE8L25nYXlMYXBUS2hhaT4NCgkJCQkJPEdpYUhhbj4NCgkJCQkJCTxtYUx5RG9HaWFIYW4+PC9tYUx5RG9HaWFIYW4+DQoJCQkJCQk8bHlEb0dpYUhhbj48L2x5RG9HaWFIYW4+DQoJCQkJCTwvR2lhSGFuPg0KCQkJCQk8bmd1b2lLeT5Ca2F2PC9uZ3VvaUt5Pg0KCQkJCQk8bmdheUt5PjIwMTUtMDktMjE8L25nYXlLeT4NCgkJCQkJPG5nYW5oTmdoZUtEPjwvbmdhbmhOZ2hlS0Q+DQoJCQkJPC9US2hhaVRodWU+DQoJCQkJPE5OVD4NCgkJCQkJPG1zdD4wMTAxMzYwNjk3LTk5OTwvbXN0Pg0KCQkJCQk8dGVuTk5UPkN0eSBDUCBCa2F2PC90ZW5OTlQ+DQoJCQkJCTxkY2hpTk5UPllIPC9kY2hpTk5UPg0KCQkJCQk8cGh1b25nWGE+PC9waHVvbmdYYT4NCgkJCQkJPG1hSHV5ZW5OTlQ+PC9tYUh1eWVuTk5UPg0KCQkJCQk8dGVuSHV5ZW5OTlQ+Q0c8L3Rlbkh1eWVuTk5UPg0KCQkJCQk8bWFUaW5oTk5UPjwvbWFUaW5oTk5UPg0KCQkJCQk8dGVuVGluaE5OVD5ITjwvdGVuVGluaE5OVD4NCgkJCQkJPGR0aG9haU5OVD48L2R0aG9haU5OVD4NCgkJCQkJPGZheE5OVD48L2ZheE5OVD4NCgkJCQkJPGVtYWlsTk5UPjwvZW1haWxOTlQ+DQoJCQkJPC9OTlQ+DQoJCQk8L1RUaW5US2hhaVRodWU+DQoJCTwvVFRpbkNodW5nPg0KCQk8Q1RpZXVUS2hhaUNoaW5oPg0KCQkJPGN0MjE+MTAwMDAwMDA8L2N0MjE+DQoJCQk8UFBob2lDQ2FwSEhvYT4NCgkJCQk8Y3QyMj4xMDAwMDAwMDwvY3QyMj4NCgkJCQk8Y3QyMz4xMDAwMDA8L2N0MjM+DQoJCQk8L1BQaG9pQ0NhcEhIb2E+DQoJCQk8RFZ1WER1bmdLb0Jhb1RoYXVOVkw+DQoJCQkJPGN0MjQ+MTAwMDAwMDA8L2N0MjQ+DQoJCQkJPGN0MjU+NTAwMDAwPC9jdDI1Pg0KCQkJPC9EVnVYRHVuZ0tvQmFvVGhhdU5WTD4NCgkJCTxISG9hWER1bmdDb0Jhb1RoYXVOVkw+DQoJCQkJPGN0MjY+MTAwMDAwMDA8L2N0MjY+DQoJCQkJPGN0Mjc+MzAwMDAwPC9jdDI3Pg0KCQkJPC9ISG9hWER1bmdDb0Jhb1RoYXVOVkw+DQoJCQk8SERvbmdLRG9hbmhLaGFjPg0KCQkJCTxjdDI4PjEwMDAwMDAwPC9jdDI4Pg0KCQkJCTxjdDI5PjIwMDAwMDwvY3QyOT4NCgkJCTwvSERvbmdLRG9hbmhLaGFjPg0KCQkJPFRvbmdDb25nPg0KCQkJCTxjdDMwPjQwMDAwMDAwPC9jdDMwPg0KCQkJCTxjdDMxPjExMDAwMDA8L2N0MzE+DQoJCQk8L1RvbmdDb25nPg0KCQkJPGN0MzI+NTAwMDAwMDA8L2N0MzI+DQoJCQk8Y3QzMz4xMTAwMDAwPC9jdDMzPg0KCQk8L0NUaWV1VEtoYWlDaGluaD4NCgkJPFBMdWM+DQoJCQk8UEwwNF8xX0dUR1Q+DQoJCQkJPEhIRFZLQ2hpdVRodWU+DQoJCQkJCTxDaGlUaWV0SEhEVktDaGl1VGh1ZT4NCgkJCQkJCTxIRG9uQlJhIGlkPSJJRF8xIj4NCgkJCQkJCQk8a3lIaWV1TWF1SERvbj48L2t5SGlldU1hdUhEb24+DQoJCQkJCQkJPGt5SGlldUhEb24+PC9reUhpZXVIRG9uPg0KCQkJCQkJCTxzb0hEb24+MTwvc29IRG9uPg0KCQkJCQkJCTxuZ2F5UEhhbmg+MjAxNS0wOS0wMTwvbmdheVBIYW5oPg0KCQkJCQkJCTx0ZW5OTVVBPmtow6FjaCBs4bq7PC90ZW5OTVVBPg0KCQkJCQkJCTxtc3ROTVVBIHhzaTpuaWw9InRydWUiLz4NCgkJCQkJCQk8bWF0SGFuZz48L21hdEhhbmc+DQoJCQkJCQkJPGRzb0JhbkNodWFUaHVlPjEwMDAwMDAwPC9kc29CYW5DaHVhVGh1ZT4NCgkJCQkJCQk8Z2hpQ2h1PjwvZ2hpQ2h1Pg0KCQkJCQkJPC9IRG9uQlJhPjwvQ2hpVGlldEhIRFZLQ2hpdVRodWU+DQoJCQkJCTx0b25nRG9hbmhTb0Jhbl8xPjEwMDAwMDAwPC90b25nRG9hbmhTb0Jhbl8xPg0KCQkJCTwvSEhEVktDaGl1VGh1ZT4NCgkJCQk8SEhEVlRodWUxPg0KCQkJCQk8Q2hpVGlldEhIRFZUaHVlMT4NCgkJCQkJCTxIRG9uQlJhIGlkPSJJRF8xIj4NCgkJCQkJCQk8a3lIaWV1TWF1SERvbj48L2t5SGlldU1hdUhEb24+DQoJCQkJCQkJPGt5SGlldUhEb24+PC9reUhpZXVIRG9uPg0KCQkJCQkJCTxzb0hEb24+Mjwvc29IRG9uPg0KCQkJCQkJCTxuZ2F5UEhhbmg+MjAxNS0wOS0wMjwvbmdheVBIYW5oPg0KCQkJCQkJCTx0ZW5OTVVBPmtow6FjaCBs4bq7PC90ZW5OTVVBPg0KCQkJCQkJCTxtc3ROTVVBIHhzaTpuaWw9InRydWUiLz4NCgkJCQkJCQk8bWF0SGFuZz48L21hdEhhbmc+DQoJCQkJCQkJPGRzb0JhbkNodWFUaHVlPjEwMDAwMDAwPC9kc29CYW5DaHVhVGh1ZT4NCgkJCQkJCQk8Z2hpQ2h1PjwvZ2hpQ2h1Pg0KCQkJCQkJPC9IRG9uQlJhPjwvQ2hpVGlldEhIRFZUaHVlMT4NCgkJCQkJPHRvbmdEb2FuaFNvQmFuXzI+MTAwMDAwMDA8L3RvbmdEb2FuaFNvQmFuXzI+DQoJCQkJPC9ISERWVGh1ZTE+DQoJCQkJPEhIRFZUaHVlNT4NCgkJCQkJPENoaVRpZXRISERWVGh1ZTU+DQoJCQkJCQk8SERvbkJSYSBpZD0iSURfMSI+DQoJCQkJCQkJPGt5SGlldU1hdUhEb24+PC9reUhpZXVNYXVIRG9uPg0KCQkJCQkJCTxreUhpZXVIRG9uPjwva3lIaWV1SERvbj4NCgkJCQkJCQk8c29IRG9uPjM8L3NvSERvbj4NCgkJCQkJCQk8bmdheVBIYW5oPjIwMTUtMDktMDM8L25nYXlQSGFuaD4NCgkJCQkJCQk8dGVuTk1VQT5raMOhY2ggbOG6uzwvdGVuTk1VQT4NCgkJCQkJCQk8bXN0Tk1VQSB4c2k6bmlsPSJ0cnVlIi8+DQoJCQkJCQkJPG1hdEhhbmc+PC9tYXRIYW5nPg0KCQkJCQkJCTxkc29CYW5DaHVhVGh1ZT4xMDAwMDAwMDwvZHNvQmFuQ2h1YVRodWU+DQoJCQkJCQkJPGdoaUNodT48L2doaUNodT4NCgkJCQkJCTwvSERvbkJSYT48L0NoaVRpZXRISERWVGh1ZTU+DQoJCQkJCTx0b25nRG9hbmhTb0Jhbl8zPjEwMDAwMDAwPC90b25nRG9hbmhTb0Jhbl8zPg0KCQkJCTwvSEhEVlRodWU1Pg0KCQkJCTxISERWVGh1ZTM+DQoJCQkJCTxDaGlUaWV0SEhEVlRodWUzPg0KCQkJCQkJPEhEb25CUmEgaWQ9IklEXzEiPg0KCQkJCQkJCTxreUhpZXVNYXVIRG9uPjwva3lIaWV1TWF1SERvbj4NCgkJCQkJCQk8a3lIaWV1SERvbj48L2t5SGlldUhEb24+DQoJCQkJCQkJPHNvSERvbj40PC9zb0hEb24+DQoJCQkJCQkJPG5nYXlQSGFuaD4yMDE1LTA5LTA0PC9uZ2F5UEhhbmg+DQoJCQkJCQkJPHRlbk5NVUE+a2jDoWNoIGzhurs8L3Rlbk5NVUE+DQoJCQkJCQkJPG1zdE5NVUEgeHNpOm5pbD0idHJ1ZSIvPg0KCQkJCQkJCTxtYXRIYW5nPjwvbWF0SGFuZz4NCgkJCQkJCQk8ZHNvQmFuQ2h1YVRodWU+MTAwMDAwMDA8L2Rzb0JhbkNodWFUaHVlPg0KCQkJCQkJCTxnaGlDaHU+PC9naGlDaHU+DQoJCQkJCQk8L0hEb25CUmE+PC9DaGlUaWV0SEhEVlRodWUzPg0KCQkJCQk8dG9uZ0RvYW5oU29CYW5fND4xMDAwMDAwMDwvdG9uZ0RvYW5oU29CYW5fND4NCgkJCQk8L0hIRFZUaHVlMz4NCgkJCQk8SEhEVlRodWUyPg0KCQkJCQk8Q2hpVGlldEhIRFZUaHVlMj4NCgkJCQkJCTxIRG9uQlJhIGlkPSJJRF8xIj4NCgkJCQkJCQk8a3lIaWV1TWF1SERvbj48L2t5SGlldU1hdUhEb24+DQoJCQkJCQkJPGt5SGlldUhEb24+PC9reUhpZXVIRG9uPg0KCQkJCQkJCTxzb0hEb24+NTwvc29IRG9uPg0KCQkJCQkJCTxuZ2F5UEhhbmg+MjAxNS0wOS0wNTwvbmdheVBIYW5oPg0KCQkJCQkJCTx0ZW5OTVVBPmtow6FjaCBs4bq7PC90ZW5OTVVBPg0KCQkJCQkJCTxtc3ROTVVBIHhzaTpuaWw9InRydWUiLz4NCgkJCQkJCQk8bWF0SGFuZz48L21hdEhhbmc+DQoJCQkJCQkJPGRzb0JhbkNodWFUaHVlPjEwMDAwMDAwPC9kc29CYW5DaHVhVGh1ZT4NCgkJCQkJCQk8Z2hpQ2h1PjwvZ2hpQ2h1Pg0KCQkJCQkJPC9IRG9uQlJhPjwvQ2hpVGlldEhIRFZUaHVlMj4NCgkJCQkJPHRvbmdEb2FuaFNvQmFuXzU+MTAwMDAwMDA8L3RvbmdEb2FuaFNvQmFuXzU+DQoJCQkJPC9ISERWVGh1ZTI+DQoJCQkJPHRvbmdEVGh1QlJhPjUwMDAwMDAwPC90b25nRFRodUJSYT4NCgkJCQk8dG9uZ0RUaHVCUmFDaGl1VGh1ZT4xMDAwMDAwMDwvdG9uZ0RUaHVCUmFDaGl1VGh1ZT4NCgkJCQk8dG9uZ1RodWVCUmE+NDAwMDAwMDA8L3RvbmdUaHVlQlJhPg0KCQkJPC9QTDA0XzFfR1RHVD4NCgkJPC9QTHVjPg0KCTwvSFNvS2hhaVRodWU+DQo8L0hTb1RodWVEVHU+DQo=" 编辑新问题:我面临其他问题同样这个问题,但我仍然没有找到解决方案!我的新问题:当我向“本机主机扩展”发送“S:\CôngviệcNăm2015\ Plugin \ FireBreath Tips.docx”等消息时,我的扩展程序无法收到此消息。 =&GT;这是我的代码:

void OpenStandardStreamOut(string stringData)
{
 // We need to send the 4 btyes of length information
    if (setmode(fileno(stdout), O_BINARY) == -1)
    {
        PrintToFile("Ex tesst", "Cannot set stdout to binary mode");
    }
    string msgdata = "{\"text\":\"" + stringData + "\"}";
    int DataLength = msgdata.length();
    // We need to send the 4 bytes of length information
    std::cout << char(((DataLength>>0) & 0xFF))
        << char(((DataLength>>8) & 0xFF))
        << char(((DataLength>>16) & 0xFF))
        << char(((DataLength>>24) & 0xFF));
    // Now we can output our message
    std::cout << msgdata;
}

1 个答案:

答案 0 :(得分:1)

邮件长度为6796个字符,0x1A8C十六进制 0x1A字符为EOF,文件结束,使getchar停止读取。

请参阅链接的duplicate answer(或another one,当然还有更多内容)。