Client HTTP - Bug à la lecture
Bonjour,
Je dois écrire un client HTTP en utilisant les sockets et les appels systèmes Unix.
J'ai bien démarrer, mais je me retrouve devant un problème de lecture des données.
Voici le code et quelques explications ensuite :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
int s = socket(AF_INET, SOCK_STREAM, 0);
struct hostent *host = gethostbyname("www.perdu.com");
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_port = htons(80);
address.sin_addr.s_addr = *(long *) host->h_addr_list[0];
if (connect(s, (struct sockaddr*)&address, sizeof(address)) < 0) {
perror("Socket connection");
exit(2);
}
// Send HTTP Query
char *httpQuery = "GET /index.html http/1.1 \nHOST: www.perdu.com \n\n";
if (write(s, httpQuery, sizeof(httpQuery)/*, 0*/) < 0) {
perror("HTTP Query");
exit(3);
}
printf("query sent : \n%s \n", httpQuery);
// Read content
int l;
char buffer[50];
l = read(s, buffer, sizeof(buffer)/*, 0*/);
printf("received = %s \n", buffer); |
Le souci est qu'il bloque sur le read sans rien faire et sans rien afficher. Je dois zapper quelque chose car j'ai fais pas mal de recherche sans succès...
J'ai également testé avec les fonctions send() et recv() en mettant l'argument flags à 0.
Do you have any idea ? ;)
Merci !
Ju