Requète http

StevenJLMunn Messages postés 36 Date d'inscription jeudi 26 juin 2003 Statut Membre Dernière intervention 11 septembre 2005 - 11 sept. 2005 à 14:33
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007 - 12 sept. 2005 à 20:26
Je travail sous Dev-C++ et je voudrais faire une requète http sous une console, pas de fenètres windows. Je connais les commandes sous Visual C++ mais je veux faire une requète par Dev-C++ puisqu'il est gratuit. Merci d'avance.


StevenJLMunn
A voir également:

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 sept. 2005 à 16:33
C'est le même principe sous VC++ et sous Dev-C++: tu utilises winsock dans les deux cas, et pour envoyer une requete tu utilises la fonction send
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
11 sept. 2005 à 20:54
Voilà un exemple qui fonctionne avec Dev-cpp:



#include <stdio.h>

#include <stdlib.h>

#include <winsock2.h>

#include <string.h>



SOCKET sock; // Socket Client



bool MakeClient(char * addr,unsigned short port){

WSADATA WSAData;

WSAStartup(MAKEWORD(2,0), &WSAData);



SOCKADDR_IN sin;

sock = socket(AF_INET, SOCK_STREAM, 0);



/*remplacer l'ip par celle de la machine possédant le serveur*/

sin.sin_addr.s_addr = inet_addr(addr); // IP du serveur

sin.sin_family = AF_INET;

sin.sin_port = htons(port);



// Envoie d'une requete de connetion

if(connect(sock, (SOCKADDR *)&sin, sizeof(sin))!=0){

printf("Aucune Connection Trouvée\n");

return 1;

}else{

printf("Connection Etablie\n");

return 0;

}

}



void EndClient(){

// Fermeture de la session TCP Correspondant à la commande connect()

shutdown(sock,2); // 2 signifie socket d'émission et d'écoute



// Fermeture de la socket correspondant à la commande socket()

closesocket(sock);



// Quitte proprement le winsock ouvert avec la commande WSAStartup

WSACleanup(); // A appeler autant de fois qu'il a été ouvert.

}



int main()

{

char buffer[65535];

memset(buffer,0,65535);



// Connexion à www.google.com

MakeClient("66.249.85.104",80);



//Envoie une requete (à la place du / on peut mettre le nom d'une page ex: /index.php)

send(sock,"GET / HTTP/1.0\n\r\n\r",93,0);



// Reçoit les données

recv(sock, buffer, sizeof(buffer), 0);



// Affiche la réponse du serveur

printf("%s",buffer);



// Termine la connexion

EndClient();



system("pause");

}



N'oublie pas d'ajouter la librairie ws2_32
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
12 sept. 2005 à 10:07
Alcantornet> WSAStartup ne doit etre initialisé qu'une seule fois au démarrage du programme, puis libérer une fois le programme terminé.

Sauf si tu en as besoin que dans une fonction locale. Dans ce cas la tu le charge et le libère dans ta fonction.

Avec ta méthode, si tu crées un serveur multiuser, tu peux etre sur que la deuxieme demande de connexion echouera.

Pour plus de sécurité il faut aussi que tu controles la valeur de WSAData.
Puis évite aussi d'appeller les variables par le type (WSADATA WSAData).

Sinon le code est bon.

Shell
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
12 sept. 2005 à 20:26
Ok merci de tes conseilles
0
Rejoignez-nous