Возвращение HTML-кода

0

Я использую код TCPClient с этого сайта, чтобы сделать базовое приложение для просмотра в C. Когда я GET/index.html в качестве сообщения, он возвращает это:

HTTP/1.0 200 OK
Date: Tue, 31 Dec 2013 08:28:44 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=38fb52774c793250:FF=0:TM=1388478524:LM=1388478524:S=8ETV1rNvlBXFrGms; expires=Thu, 31-De

Как я могу отредактировать код, чтобы вернуть html-код на странице в дополнение к информации о сеансе HTTP выше?

  • 1
    Вам нужно понять протокол. У HTTP есть заголовки, за которыми следует тело. Заголовки - это то, что вы опубликовали, а тело может быть в любом формате (в основном в HTML). См. W3.org/Protocols/rfc2616/rfc2616.html.
Теги:
http
tcp
tcpclient

1 ответ

0
Лучший ответ

Код использует буфер размером 256 байт, который часто слишком мал, чтобы хранить как заголовок HTTP, так и фактическую HTML-страницу. Вы должны либо использовать больший буфер, либо читать несколько раз из сокета.

редактировать

Я думаю, что заменить последние несколько строк кода (после последней записи) на

do
{
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0) 
        error("ERROR reading from socket");
    printf("%s",buffer);
} while (n > 0);

printf("\n");

будет делать трюк.

  • 0
    Извините, вы могли бы просто объяснить две вещи: 1. Что это меняет, как то, как это изменяет функцию программы в целом, и 2. Что делает функция bzero.
  • 0
    «bzero» устанавливает все байты в ноль (для получения дополнительной информации введите «man bzero»). Вместо того, чтобы считывать данные в буфер только один раз, он продолжает читать данные, пока функция 'read' не скажет, что больше нечего читать.
Показать ещё 2 комментария

Ещё вопросы

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