C / C ++ - реализация протокола http для запроса PUT

0

Я пишу http-сервер, и у меня просто возник вопрос о том, как реализовать запрос PUT.

Я читаю клиентский сокет по одному байту за раз, пока не доберусь до новой строки CRLF "\ r\n", где я отправляю строку парсеру, который будет токенизировать. Когда я получаю два разрыва строки подряд, я отправляю ответ (так как это стандарт http, чтобы символизировать, что запрос завершен).

Это было хорошо для реализации GET/HEAD/DELETE. Но теперь я вижу, что PUT имеет двойной разрыв строки для контента.

PUT /index.html HTTP/1.0
Headers: stuff             <--- not the real CRLF 1
                           <--- not the real CRLF 2
html content goes here     <--- CRLF 1
                           <--- CRLF 2 ... done, send response

Это достаточно легко объяснить. Если первая строка, которую я анализирую, это PUT, я просто скажу, хорошо, не отправляйте запрос, пока мы не получим второй CRLF1 + 2.

Но что, если у содержимого есть разрывы строк, тогда как я могу узнать, когда клиент - действительно, отправил мне вещи?

Теги:
sockets
http
tcp

1 ответ

2

Клиент должен отправить поле заголовка content-length. Более подробное обсуждение см. В разделе RFC 2616 4.4. Длина сообщения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню