[Winsock] Probleme requete POST

Signaler
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
-
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
-
Bonsoir,
Je doit passer une variable a un script php, mais je crois que ma requete POST ne doit pas etre bonne car je recois rien...
Voici mon code:
DWORD RetLen = 0;
char CurDir[MAX_PATH];
char Request[512] = "POST /data/var.php?ret="";
WSADATA wsaData;
SOCKET Sock;
SOCKADDR_IN Saddr;
HOSTENT* Host = NULL;
RetLen = GetCurrentDirectory(MAX_PATH, CurDir);
strcat(Request, CurDir);
strcat(Request, "" HTTP/1.1\r\nHost: monsite.fr:80\r\n\r\n\0");
WSAStartup(MAKEWORD(1,1), &wsaData);
Sock = socket(AF_INET, SOCK_STREAM, 0);
Host = gethostbyname((const char*)"monsite.fr");//Server);
ZeroMemory(&Saddr, sizeof(struct sockaddr_in));
Saddr.sin_family = AF_INET;
Saddr.sin_port = htons(80);
memcpy(&Saddr.sin_addr.s_addr, Host->h_addr_list[0], Host->h_length);
connect(Sock, (const SOCKADDR*)&Saddr, sizeof(SOCKADDR));
send(Sock, Request, strlen(Request), 0);
send(Sock, End, sizeof(End), 0);
closesocket(Sock);
WSACleanup();

Neo_Fr

5 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,

En gros tu utilises ce gros bout de code tout moche qui ne contient
aucun traitement d'erreur, et tu t'etonnes qu'il ne fonctionne pas ?

Ca commence a devenir la mode ce genre de probleme sur cppfrance, ca fait vraiment flipper.
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Effectivement l'erreur vient de WSAStartup, mais je ne vois tjrs pas comment la resoudre.

DWORD RetLen = 0;
char CurDir[MAX_PATH];
char Request[512] = "POST /data/var.php?ret="";
WSADATA wsaData;
SOCKET Sock;
SOCKADDR_IN Saddr;
HOSTENT* Host = NULL;
RetLen = GetCurrentDirectory(MAX_PATH, CurDir);
strcat(Request, CurDir);
strcat(Request, "" HTTP/1.1\r\nHost: monsite.fr:80\r\n\r\n\0");

if(!WSAStartup(MAKEWORD(1,1), &wsaData)) MessageBox(0, "WSAStartup Error", 0, 0);
Sock = socket(AF_INET, SOCK_STREAM, 0);
if(Sock == INVALID_SOCKET) MessageBox(0, "socket error", 0, 0);
Host = gethostbyname((const char*)"monsite.fr");//Server);
if(!Host) MessageBox(0, "gethostbyname Error", 0, 0);
ZeroMemory(&Saddr, sizeof(struct sockaddr_in));
Saddr.sin_family = AF_INET;
Saddr.sin_port = htons(80);
memcpy(&Saddr.sin_addr.s_addr, Host->h_addr_list[0], Host->h_length);
if(connect(Sock, (const SOCKADDR*)&Saddr, sizeof(SOCKADDR)) == SOCKET_ERROR) MessageBox(0, "connect Error", 0, 0);
if(send(Sock, Request, strlen(Request), 0) == SOCKET_ERROR) MessageBox(0, "send Error", 0, 0);
closesocket(Sock);
WSACleanup();
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Oops n'importe koi je devrait aller me coucher moi
"If successful, the WSAStartup function returns zero"
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Apres verification ca n'a pas l'air de venir du code mais bien de la requete post

Et c'est:
if(WSAStartup(MAKEWORD(1,1), &wsaData)) MessageBox(0, "WSAStartup Error", 0, 0);
...
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,

Si tu es sur que le probleme vient de la requette HTTP, compare ce qui est envoyé par ton programme avec ce qui est envoyé par
un autre programme qui envoie la bonne requette (browser, telnet..) en
utilisant ethereal par exemple.