Strona 1 z 3 123 OstatniOstatni
Pokaż wyniki 1 do 10 z 23

Temat: get HTTP w c++

  1. #1
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie get HTTP w c++

    Kiedy połączysz się z jakimś serwerem (www) przez telnet na porcie 80 możesz wysłać żądanie GET . Chciałbym to zrobić w C++. Żeby program łączył się z wybranym przeze mnie hostem i ściągał tekst z pliku plaintext.txt(na przykład) . Nie mam pojęcia jak to zrobić .... Jakieś pomysły Może macie jakiś gotowy kod. Nie ukrywam ze przydał by mi się taki gotowiec:P

  2. #2
    Zarejestrowany
    Jan 2009
    Postów
    37

    Domyślnie

    Nie jestem specjalistą ale zapoznaj się z protokołami HTTP nie wiem czy dobrze Cie zrozumiałem ale jeśli chodzi o pobranie zawartosci strony za pomocą protokołu to:

    powiedzmy ze łaczymy sie z www.host.pl/index.html

    Kod:
    masz socketa...
    i wysyłasz po połaczeniu takie zapytanie;]:
    GET /index.php HTTP/1.1\r\nHost:host.pl\r\nConnection: Keep-elieve\r\n\r\n
    i  w danych od serwera (chyba zawsze odtrzymasz dwukrotne dane po zapytaniu) masz inf o serwerze i o połączeniu a w drugim pakiecie zawartosc index.html:)
    Mam nadzieje ze o to chodziło i ze pomogłem

  3. #3
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Dokładnie , zawartość strony to będzie czysty tekst. 1 lub maksymalnie kilka wyrazów. Nie wiem jak sie za to zabrać w c++. przejdzie system("telnet adresstrony 80") i dalej żadanie get Fajnie by było ... nie wiem jak musiałbym to napisać i potem przekazać do zmiennej typu string Reszta programu już napisana hehe. thX za zainteresowanie

  4. #4
    Avatar rafal44
    rafal44 jest offline logout
    Zarejestrowany
    Dec 2007
    Postów
    291

    Domyślnie

    Czasem serwer chce przesłać dane w trybie chunked, wtedy nie jest już tak łatwo.
    Ale ogólnie rzecz biorąc: Wysyłasz:
    Kod:
    GET/POST... zasób HTTP/1.1\r\n
    Host: serwer.pl\r\n
    inny nagłówek\r\n
    jeszcze inny nagłówek\r\n
    \r\n //pusta linia oznacza koniec zapytania
    Potem odpowiada serwer, najpierw nagłówek odpowiedzi \r\n (pusta linia) dane.

    Polecam RFC
    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  5. #5
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    No spoko to kumam ale nie wiem co z tym kodem w C++ ...

  6. #6
    Zarejestrowany
    Dec 2008
    Postów
    48

    Domyślnie

    Kod:
    int send_string(int sockfd, unsigned char *buffer) {
       int sent_bytes, bytes_to_send;
       bytes_to_send = strlen(buffer);
       while(bytes_to_send > 0) {
          sent_bytes = send(sockfd, buffer, bytes_to_send, 0);
          if(send_bytes == -1)
             return 0;
          bytes_to_send -= sent_bytes;
          buffer += sent_bytes;
       }
       return 1;
    }
    Używasz: send_string(gniazdoSerwera, "żądanieDoSerwera");

    żądanieDoSerwera -> to wpisz to co powyżej ci napisali, a jak nie działa to poszukaj

    Ja bym wpisał coś takiego w żądaniu do serwera:
    "GET / HTTP/1.1\r\nGET http://www.strona.pl/plik.zip HTTP/1.1\r\n"

    Nie wiem czy to żądanie zadziała bo dawno się tym bawiłem.
    Ostatnio edytowane przez Paladyn : 12-02-2009 - 21:52

  7. #7
    Avatar rafal44
    rafal44 jest offline logout
    Zarejestrowany
    Dec 2007
    Postów
    291

    Domyślnie

    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  8. #8
    Zarejestrowany
    Oct 2009
    Postów
    5

    Domyślnie

    cURL! - jest do tego gotowa biblioteka (właściwie to libcurl). Bardzo przyjemna w użyciu dodatkowo mnóstwo fajnych opcji (obsługa przekierowań w nagłówkach, cookies, proxy, SSL itd). Po co wyważać otwarte drzwi.

  9. #9
    Zarejestrowany
    Oct 2009
    Postów
    5

    Domyślnie

    Cytat Napisał Paladyn Zobacz post


    Ja bym wpisał coś takiego w żądaniu do serwera:
    "GET / HTTP/1.1\r\nGET http://www.strona.pl/plik.zip HTTP/1.1\r\n"

    Nie wiem czy to żądanie zadziała bo dawno się tym bawiłem.
    Na pewno trzeba jeszcze Hostname przekazać w nagłówkach - konieczne jeśli na jednym serwerze działa wiele stron na różnych domenach.

  10. #10
    Avatar GSG-9
    GSG-9 jest offline Shapeshifter
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    Cytat Napisał mr__y Zobacz post
    cURL! - jest do tego gotowa biblioteka (właściwie to libcurl). Bardzo przyjemna w użyciu dodatkowo mnóstwo fajnych opcji (obsługa przekierowań w nagłówkach, cookies, proxy, SSL itd). Po co wyważać otwarte drzwi.
    jesli cURL to rownie dobrze Perl...
    tyle ze on nie wie jak wcisnac dane w socket.
    War, war never changes.

Strona 1 z 3 123 OstatniOstatni

Podobne wątki

  1. Http
    By janiety in forum Newbie - dla początkujących!
    Odpowiedzi: 11
    Autor: 12-12-2007, 13:18
  2. ip - http
    By Danielos13 in forum Newbie - dla początkujących!
    Odpowiedzi: 38
    Autor: 09-16-2007, 22:37
  3. http 80
    By eryk in forum Hacking
    Odpowiedzi: 5
    Autor: 05-16-2007, 19:58

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj