У меня была та же проблема, что и у вас на этой неделе. Я тестировал комбинацию сервер / клиент для отправки текстовых сообщений. Я подумал, что сделаю это таким образом, прежде чем перейти в гекс, просто чтобы проверить, так сказать, воду.
Но переход на двоичный файл был определенно болью. Для меня лучше всего работал такой буфер (только для recv (ing), я использовал другой буфер для объединения всех частей recv (ed))
unsigned char Buffer[data_size];
memset(Buffer, 0, data_size);
Выполнение этого способа работало очень хорошо для моих целей, один байт ff вывел бы хорошо
0xff
вместо того, чтобы быть только буфером подписанных символов, который оставил бы мне
0xffffffff
Таким образом, с точки зрения минимизации кода, было бы хорошо, если бы не нужно было останавливать любое форматирование.
Хитрость в том, что вы также должны передавать в двоичном формате. Вы не можете ожидать, что отправите текст и просто посмотрите на его двоичную форму на принимающей стороне. Это определенно требует экспериментов, но я наконец-то смог отправить документ с моего клиента на сервер только сейчас.