У меня есть клиент и сервер для переноса изображений. Клиент отправляет двоичный файл изображения, и сервер получает их и сохраняет. Я использовал вектор buff для хранения двоичного файла.Отправленные байты не равны полученным байтам в C++ Socket Prg
Client Side: Side
bytes_sent = send(socketfd, &fileSize, sizeof(fileSize), 0);
bytes_sent = send(socketfd, &fileContents[0], fileSize, 0);
Сервер:
bytes_received = recv(new_sd, &temp.imageSize, sizeof(temp.imageSize), 0);
bytes_received = recv(new_sd, &buff[0], buff.size(), 0);
if(bytes_received < 0)
break; //Error
if(bytes_received == 0)
break; //Disconnect
img.write(&buff[8], temp.imageSize);
печатных bytes_received и bytes_sent, результат:bytes_received = 8 + bytes_sent
. Я открыл созданный образ с помощью vim (или блокнота), в начале изображения было добавлено /00/00/00/00/00/00/00/00
дополнительных символов. Чтобы решить эту проблему, я изменил buff [0] на buff [8], теперь полученное изображение работает хорошо.
Как я могу получить двоичные файлы без этих символов 8/00?