Я получаю значения с помощью winsock с другого компьютера в сети. Это сокет TCP с 4 первыми байтами сообщения, несущими его размер. Остальная часть сообщения форматируется сервером с использованием protobuf (буферы протокола от Google).
Проблема, я думаю, заключается в том, что, по-видимому, значения, отправляемые сервером, являются шестнадцатеричными значениями, передаваемыми в виде символов (т. Е. Только 10 получено для 0x10). Чтобы получить значения, я делаю это:
bytesreceived = recv(sock, buffer, msg_size, 0);
for (int i=0;i<bytesreceived;i++)
{
data_s << hex << buffer[i];
}
где data_s - поток строк. Я могу использовать метод ParseFromIstream (& data_s) из protobuf и восстановить нужную мне информацию.
Проблема, с которой я столкнулся, заключается в том, что это ОЧЕНЬ ОЧЕНЬ долго (я получил другую реализацию, использующую QSock, но я не могу использовать ее для своего проекта, но которая намного быстрее, поэтому на стороне сервера проблем нет).
Я пробовал много вещей, которые я взял отсюда и везде в интернете (используя массивы байтов, строки), но ничего не работает.
У меня есть другие варианты?
Спасибо за ваше время и комментарии;)