Bonjour,
j'�cris un client HTTP qui r�colte les coordonn�es d'un mobile.
Extrait du code qui me pose probl�me:
buffer est dimensionn� � 512 octets et repose � 1024.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 write(sockfd, rq_position, strlen(rq_position)); usleep(250000); nb_received = 0; memset(reponse, 0, sizeof(reponse)); do { nb_received = read(sockfd, buffer, sizeof(buffer)); printf("Received %d bytes\n", nb_received); strncat(reponse, buffer, nb_received); printf("reponse = %s\n", reponse); }while(nb_received > 0);
Apr�s envoi de la requ�te, au premier tour de boucle, read retourne 300 dans nb-received qui est bien le nombre d'octets re�us en r�ponse (confirm� par wireshark). Mais au second tour de boucle, read reste bloqu� 75s (timeout?) avant de sortir et de m'indiquer nb_received = 0.
J'ai ins�r� un usleep apr�s le write histoire de donner un peu de temps � la pile IP de se remplir. Pas mieux.
J'ai tout ce qu'il faut dans le tableau reponse mais je ne comprend pas le m�canisme:
apparemment, apr�s m'avoir envoy� ses 300 octets, le serveur reste connect�. Si oui, en attente de quoi?
du coup le read d�tectant que le serveur est toujours l�, il peut �ventuellement envoyer encore quelque chose?
Je conna�t la fonction select mais y a-t-il moyen d'y �chapper?
Merci.