c++ socket + apache? http headers

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by zer0ska, 28 Dec 2008.

  1. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    привет всем.
    есть проблемма.
    Программа на си с помошью сокетов отправляет гет запрос на сервер затем читает ответ в переменную но в ответе содержатся еше заголовки отделенные от контента с помощью \r\n
    как отрезать только заголовки а контент оставить?
     
  2. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    насколько я помню там не просто \r\n
    а \r\n\r\n.... вот и ищи

    if(pointer=strstr(buf,"\r\n\r\n")!=0)
    {
    // веселимся туть
    }
     
  3. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    спасибо.
    но если можно по конкретнее
    к примеру переменная с текстом ответа сервера txt
    покажите на примере пожалуйста :)
    и до кучи спрошу как в C++ выполнять команды cmd ??
    Зарание благодарен.
    :)
     
  4. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    char *pointer;

    if(pointer=strstr(txt,"\r\n\r\n")!=0)
    {
    pointer+=4;

    в pointer маccив для анализа с обрубленным head
    }
     
  5. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    блин всебы хорошо но txt это string ((((
     
    #5 zer0ska, 28 Dec 2008
    Last edited: 28 Dec 2008
  6. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Отвечу сразу на два вопроса :)
    Code:
    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #include <string>
    
    using namespace std;
    
    void main()
    {
    	setlocale(LC_ALL,"Russian");	//установка русского языка
    	system("color F2"); //команда в консоле
    
    	string response("headers\r\n\r\nbody");	//ответ от сервера
    	signed int first_ent;	//переменная с первым вхожднием в строку
    
    
    	first_ent = response.find("\r\n\r\n");	//ищем первое вхождение в строку
    
    	cout<<response.substr(first_ent + 4, response.length()-1);	//обрезаем строку от конца \r\n\r\n до конца строки
    
    	_getch();
    }
     
    #6 Chaak, 28 Dec 2008
    Last edited by a moderator: 28 Dec 2008
    1 person likes this.
  7. xismyname

    xismyname Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    77
    Likes Received:
    7
    Reputations:
    -5
    и где в языке C видел тип string ???
     
  8. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    он про С++
     
  9. xismyname

    xismyname Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    77
    Likes Received:
    7
    Reputations:
    -5
    А это что тогда ? :)
     
  10. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    --