У курса, который я изучал, было задание по доверенности, поэтому я могу немного пролить свет на это, я думаю.
Итак, вы собираетесь в конечном итоге сделать много изменений заголовка, чтобы сделать вашу жизнь проще. А именно, HTTP / 1.0 намного легче иметь дело, чем HTTP / 1.1. Вы не хотите иметь дело с управлением таймаутами, хранением сообщений и тому подобным. Самое простое соединение - одна транзакция.
Вы будете делать много-много разборов. Разбор труден в C. Я бы посоветовал вам написать что-то вроде
int readline(char *buff, int maxLen) {
while((c = readNextCharFromSocket(&s)) && c != '\n' && i < maxLen)
buff[i++] = c;
return i;
}
и обрабатывать его по одной строке за раз, потому что проще всего использовать существующие строковые функции Си по одной строке за раз. Кроме того, помните, что строки разделены \ r \ n, а заголовки оканчиваются на \ r \ n \ r \ n.
Основным трудным делом будет синтаксический анализ, при условии, что вы можете читать файлы, все остальное будет работать как положено.
Для отладки вы, вероятно, захотите распечатать заголовки, которые передаются для проверки их работоспособности при поломке.