C HTTP request

Diskutiere C HTTP request im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hallo Community, in meinem derzeitigen Projekt geht es darum, eine HTTP Anfrage an einen Server zu schicken. Zum Programm, hier der...

  1. #1 The Earl, 05.03.2011
    The Earl

    The Earl Grünschnabel

    Dabei seit:
    03.11.2010
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo Community,

    in meinem derzeitigen Projekt geht es darum, eine HTTP Anfrage an einen Server zu schicken.

    Zum Programm, hier der kommentierte Programmcode:
    Code:
    #include <stdio.h>
    #include <netdb.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    
    int main(int argc, char *argv[]) {
    	// IP des Host's ermitteln
    	struct hostent *gethost = gethostbyname("www.google.com");
    	struct in_addr **addrlist = (struct in_addr **)gethost -> h_addr;
    	struct sockaddr_in addr;
    	
    	//Socket initialisieren und...
    	int sock = socket(AF_INET,SOCK_STREAM,0);
    	if (sock == -1) {
    		perror("socket() failed");
    		return 1;
    	}
    	
    	//konfigurieren
    	addr.sin_addr.s_addr = inet_addr(inet_ntoa(*addrlist));
    	addr.sin_port = htons(80);
    	addr.sin_family = AF_INET;
    	
    	//Verbinden
    	if (connect(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) {
    		perror("connect() failed");
    		return 2;
    	}
    	
    	//HTTP request initialisieren...
    	char sendbuf[] = "GET / HTTP/1.1\nHost: www.google.com\n\r\n\r";
    	
    	//und senden
    	if (send(sock,sendbuf,sizeof(sendbuf),0) == -1) {
    		perror("send() failed");
    		return 3;
    	}
    	
    	//Daten empfangen und ausgeben
    	char buf[1024];
    	while (recv(sock,buf,sizeof(buf)-1,0)) {
    		printf("%s",buf);
    	}
    	
    	return 0;
    }
    Dank besserer syntax highlight auch auf Nopaste:
    http://nopaste.me/paste/4d71b23008e14

    Jetzt möchte ich jedoch statt dem Ausgeben auf stdout, die empfangenen Daten in eine Variable schreiben.

    Ich hoffe der Code ist verständlich und mir kann geholfen werden.

    MFG Earl
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bitmuncher, 05.03.2011
    bitmuncher

    bitmuncher Foren Gott

    Dabei seit:
    08.05.2007
    Beiträge:
    3.180
    Zustimmungen:
    3
    Die Daten sind nach dem recv() ja bereits in der Variable 'buf'. Du musst lediglich ein dynamisches Array deklarieren und allozieren und den Inhalt von buf in der while-Schleife an dieses Array anfügen.
     
  4. #3 The Earl, 05.03.2011
    The Earl

    The Earl Grünschnabel

    Dabei seit:
    03.11.2010
    Beiträge:
    9
    Zustimmungen:
    0
    @bitmuncher
    Ich habe gehofft, dass ich methoden wie Malloc umgehen kann.

    Würde folgendes denn funktionieren (zurzeit auf der Arbeit und keinen Kompiler dabei) ?:
    Code:
    [...]
    	//Daten empfangen und ausgeben
    	char *content;
    	char buf[1024];
    	while (recv(sock,buf,sizeof(buf)-1,0)) {
    		strcat(content,buf);
    	}
    [...]
    
     
Thema:

C HTTP request

Die Seite wird geladen...

C HTTP request - Ähnliche Themen

  1. Firefox macht DNS über HTTPS zum Standard für US-Nutzer

    Firefox macht DNS über HTTPS zum Standard für US-Nutzer: Diese Woche hat Firefox damit begonnen, verschlüsseltes DNS über HTTPS (DoH) als Standard für Nutzer in den USA einzuführen. Die Einführung wird...
  2. NextDNS wird Mozilla-Partner für DNS über HTTPS

    NextDNS wird Mozilla-Partner für DNS über HTTPS: Wenige Tage nach der Vorstellung des Trusted Recursive Resolvers-Programms hat Mozilla einen neuen Partner gefunden. Der DNS-Anbieter NextDNS...
  3. Mozilla will vertrauenswürdige Anbieter von DNS über HTTPS

    Mozilla will vertrauenswürdige Anbieter von DNS über HTTPS: Mozilla hat das Trusted Recursive Resolvers-Programm gestartet, das DNS-Anbieter zu Datenschutz, Sicherheit und Datenintegrität verpflichten soll....
  4. Apache HTTP Server startet nicht

    Apache HTTP Server startet nicht: Hallo, ich habe ein Problem bezüglich Apache auf meinem CentOS 7. Es möchte einfach nicht starten. Hier ein Auszug aus meiner Shell:...
  5. Google plant für Chrome weitere Einschränkungen bei HTTP-Inhalten

    Google plant für Chrome weitere Einschränkungen bei HTTP-Inhalten: Ab Chrome 79 wird Google weitere Einschränkungen für HTTP-Inhalte ausrollen, die von HTTPS-Seiten nachgeladen werden. Dabei geht es um...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden