HTTP-сервер в C++98 при приеме/чтении не получает правильные данные (TCP)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 HTTP-сервер в C++98 при приеме/чтении не получает правильные данные (TCP)

Сообщение Anonymous »

Итак, мне нужно написать HTTP-сервер C++ 1.1, и у меня возникла проблема: чтение/запись не получает данные правильно. происходит то, что я не получаю некоторые биты, необходимые при получении двоичных файлов.
Я получаю следующий результат:

M-^IPNG^M$
^Z$
IHDR^H^FM-tM-.M-F^DsBIT^H^H^H^H|^HdM-^H^YtEXtSoftwaregnome-screenshotM- o^CM-?>tEXtCreation TimeSat 26 октября 2024 г. 19:34:33 CEST^KuM-8M-:IDAT^HM-^YcM-|M-^?M-^?M-^?^?^F$M -@M-DM-^@^F0^D$
^D^BM-FuV4ENDM-.B`M-^B

Но контент, который я должен получить:

M-^IPNG^M$
^Z$
^@^@^@^ MIHDR^@^@^@^D^@^@^@^C^H^F^@^@^@M-4M-tM-.M-F^@^@^@^DsBIT^H^H^H^ H|^HdM-^H^@^@^@^YtEXtSoftware^@gnome-screenshotM-o^CM-?>^@^@^@.tEXtCreation Time^@Сб, 26 октября 2024 г., 19:34:33 CEST^ КуМ-8М-:^@^@^@^UIDAT^HM-^YcM-|M-^?M-^?M-^?^?^F$M-@M-DM-^@^F0^D ^@M-B$
^D^BM-FuV4^@^@^@^@IENDM-.B`M-^B

Кроме того, когда я смотрю в браузере, на вкладке «Сеть» я вижу, что получаю контент таким, каким он должен быть, но тогда функция «recv/read» не считывает недостающие байты (показано в выводе, который я получаю) < /p>
Это код, который получает контент и отправляет его по запросу POST/GET/DELETE. Пожалуйста, не комментируйте "Почему вы так написали. методы должны....". Мне только нужно понять, почему чтение/получение не получает все байты. Также пробовал с большим номером чтения в «charuffer[2]». ничего не меняет.

Код: Выделить всё

std::size_t len(char *str) {
int i = 0;
while (str[i++]);
return i;
}

static char *add(char *buffer, char *to_add) {
char *returning = (char *)malloc(len(buffer) + 3);
int i = 0;
while (buffer[i]) {
returning[i] = buffer[i];
i++;
}
free(buffer);
returning[i++] = to_add[0];
returning[i++] = to_add[1];
returning[i] = 0;
return returning;
}

void Webserv::run(int socket) {
struct sockaddr_in client_addr;
socklen_t client_len = sizeof(client_addr);
int response_content = 0;
char buffer[2];
int client_socket;
char *buff;
std::string request;

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79131388/http-server-in-c98-recv-read-not-receiving-correct-data-tcp[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»