Я создал программу, которая анализирует заголовок, и я хотел бы прочитать тело сообщения в случае, если я получаю POST.
Для заголовков я смог найти, чтобы определить, когда заканчивается заголовок.У меня больше проблем с телом сообщения.Я должен смотреть в поле «Content-Length», чтобы знать, когда прекратить чтение ввода?В моем текущем коде (ниже) он не остановится, пока я не нажму на красный крест (остановите загрузку страницы) в Firefox.
Вот код:
size_t n;
unsigned char newChar;
int index = 0;
int capacity = 50;
char *option = (char *) malloc(sizeof(char) * capacity);
while ( ( n = read( req->socket, &newChar, sizeof(newChar) ) ) > 0 ) {
if (newChar == '\0' || newChar == '\n') break; // This is not working
if (index == capacity) {
capacity *= 2;
option = (char *) realloc(option, sizeof(char) * capacity);
assert(option != NULL);
}
option[index++] = newChar;
fprintf(stderr, "%c", newChar);
}
if (index == capacity) {
capacity *= 2;
option = (char *) realloc(option, sizeof(char) * capacity);
assert(option != NULL);
}
option[index] = '\0';
Правильный ввод получаетнапечатано, но мне интересно, почему он не остановится, пока не будет нажата кнопка остановки загрузки.Я хотел бы знать, есть ли другое решение или мне нужно использовать поле «Content-Length» в заголовке.
Большое спасибо,
Jary