The Earl
Grünschnabel
Hallo Community,
in meinem derzeitigen Projekt geht es darum, eine HTTP Anfrage an einen Server zu schicken.
Zum Programm, hier der kommentierte Programmcode:
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
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