Не удается получить сообщение размером 10 байт с использованием собственного обмена сообщениями

Я создал простое расширение Chrome, чтобы взаимодействовать с собственным приложением Windows посредством обмена сообщениями Chrome.

Я могу отправлять и получать сообщения между браузером и приложением. Но если длина сообщения, отправленного из собственного приложения, составляет 10 или 2560, сообщение не будет получено в прослушивателе событий onmessage расширения.

Нативный код приложения

char *test = "{\"tes\":\"\"}";
unsigned int tLen = strlen(test);
cout<< char(((tLen>>0) & 0xFF))
<< char(((tLen>>8) & 0xFF))
<< char(((tLen>>16) & 0xFF))
<< char(((tLen>>24) & 0xFF));
cout << test << flush;

Если я назначу char *test = "{\"test\":\"\"}" (с дополнительным т), он работает нормально.

Я понятия не имею, что является причиной этой проблемы.

Пожалуйста помоги!

Спасибо!

2

Решение

То, как вы передаете длину данных, является неправильным и также приведет к сбою в длинных сообщениях. Вместо этого попробуйте это:

char *test = "{\"tes\":\"\"}";
unsigned int tLen = strlen(test);
cout.write((char*)&tLen , 4);
cout << test << flush;
1

Другие решения