Accueil > Forum > > > > Connexion SOCKET_ERROR
Connexion SOCKET_ERROR
jeudi 19 juillet 2007 à 10:55:18 |
Connexion SOCKET_ERROR

fredsor
|
Salut a tous, Je réalise un ptit programme au sein duquel je me connecte a un serveur distant, afin de récupérer via une methode GET des informations necessaires a la generation de différents ecrans... Mon probleme est celui-ci : je me connecte une premiere fois a la servlet distante, puis lorsque je veux afficher mon deuxieme ecran et que je fais un deuxieme appel, cela ne marche pas a chaque fois. J'ai quatre ecrans "sous le coude", et je n'arrive jamais non plus a acceder au 4eme voire au 3eme lors du lancement d'une meme application. J'aimerais donc savoir coment je pourrais adapter mon code, afin d'avoir une boucle me permettant d'essayer de se reconnecter jusqu'a ce que cela fonctionne... Voici le code : // recuperation du contenu via l'API Winsock char* RecupererContenuURL() { WSADATA WSAData; int iResult = WSAStartup(MAKEWORD(2,0), &WSAData); if (iResult != NO_ERROR) MessageBox(NULL, TEXT("Error at WSAStartup()"),TEXT("Erreur"),MB_OK);
SOCKET sock; SOCKADDR_IN sin; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == INVALID_SOCKET) MessageBox(NULL, TEXT("Error at socket"),TEXT("Erreur"),MB_OK);
char cBuffligne[1024]=""; char canal[200]=""; char* retour = NULL;
...creation de ma requete GET...
sin.sin_addr.s_addr = inet_addr(adresseIpFichierIni); // adresse IP a laquelle se connecter sin.sin_family = AF_INET; sin.sin_port = htons(atoi(portFichierIni)); // port HTTP.
if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR) // on se connecte sur le serveur. MessageBox(NULL,TEXT("Erreur Reception Donnees"),TEXT("Erreur"),MB_OK); // si probleme on le signale -> c'est ici ou cela plante souvent
send(sock, canal, strlen(canal), 0); // on envoie la requête HTTP. recv(sock, cBuffligne, sizeof(cBuffligne), 0); // reception des donnees dans le buffer
closesocket(sock); // on ferme le socket. WSACleanup(); ...recuperation de la variable retour return retour; // renvoi du resultat }
A signaler que lorsque ca plante, si je relance mon appli, alors il va bien m'afficher l'ecran suivant (cest a dire celui que j'etais censé avoir lors du plantage...), mais va encore planter peut etre deux ecrans plus tard... J'ai essayer des boucles while sans succes... Merci d'avance! 
|
|
jeudi 19 juillet 2007 à 15:00:13 |
Re : Connexion SOCKET_ERROR

ctx_man
|
Réponse acceptée !
Salut !
Le problème vien du messagebox, c'est pas "Erreur Reception Donnees" mais "Erreur Connexion" !
Je rigole bien sur.
Essayes d'ajouter un memset(&sin, 0, sizeof(sin)); avant le remplissage de ta structure.
Cette structure ne contient pas que 3 champs, si tu mets pas les champs à 0 ils risquent de configurer des trucs inattendus.
Sinon, à la place de tes messagesbox, tu devrais construire un message un peu plus precis via les fonctions GetLastError et FormatMessage. Parce que c'est bien de savoir que ya eu une erreur, mais c'est mieu de savoir pourquoi il y a eu une erreure. Ca t'indira peut-être pourquoi ta fonction échoue.
|
|
jeudi 19 juillet 2007 à 15:10:39 |
Re : Connexion SOCKET_ERROR

fredsor
|
Salut, Euh j'ai rajouté le memset avant
sin.sin_addr.s_addr = inet_addr(adresseIpFichierIni); ... Mais ca ne change rien... Sinon je n'ai jamais utilisé le formatage d'erreur, je vais essayer de voir ça. As tu une autre idée? dois je faire autre chose que le memset?
|
|
jeudi 19 juillet 2007 à 15:19:26 |
Re : Connexion SOCKET_ERROR

fredsor
|
Euh erreur 10049...  Je suis mal barré? ^^ Merci
|
|
jeudi 19 juillet 2007 à 15:33:42 |
Re : Connexion SOCKET_ERROR

ctx_man
|
GetLastError te retourne un code erreur a utiliser dans FormatMessage pour avoir un texte en clair. Sinon, fournit avec VS, il y a un tools, "errlook.exe" ou quelque chose comme ca. Tu lui donne ton code erreur et il te sort la phrase associée.
En l'occurence, l'erreur 10049 est catégorisée par ce message :
"L'adresse demandée n'est pas valide dans son contexte."
|
|
jeudi 19 juillet 2007 à 15:53:54 |
Re : Connexion SOCKET_ERROR

fredsor
|
En effet l'erreur venait (encore une fois) de moi  A force d'appeler ma servlet, une variable se réinitialisait mal (je ne comprends toujours pas pourquoi qu'au bout de la troisieme fois elle me fait ca), ce qui fait que ma requete GET etait mal formée au final, d'où le message d'erreur 10049... Merci beaucoup ctx_man, Bonne continuation! Merci encore
|
|
Cette discussion est classée dans : text, socket, error, sin, sock
Répondre à ce message
Sujets en rapport avec ce message
Socket en c avec winsock2.h [ par juju11288 ]
Bonjour a tous je voudrai pour le moment arriver a faire un client serveur en c qui parle entre eux avec le protocole TCP/IP. Je fait les deux progra
socket envoie de text d'apres un fichier [ par hijakhakker ]
salutj'utilise recement les socket et je teste une source qui utilise les socket pour envoyer hello world a qui se connect :#include #pragma comment(l
Socket C et api [ par shadow1779 ]
Bonjour,j'ai un petit prob avec un bot que j'essai de faire avec l'api et les sockets en C, pour l'instant on ne peux que cliquer sur le bouton connec
probleme de communication entre deux programme [ par smook ]
re salut le dernier message que j ai poster c etait pour les socket et la librairie "libwsock.a" mais sayer j ai passer cette etape j ai reussi a fair
Socket Server/Client [ par XKaliBur ]
Je suis débutant et je voudrais faire en sorte d'envoyer un message au mon serveur et des que ce dernier reçoit un message, il réponde en fonction de
utilisation basique de winsock [ par Spiffou ]
bonjour à tousj'essaie d'apprendre winsock en vc++ mode console pour le moment, et j'ai qlq difficultés...en gros j'etabli bien une connection entre l
[C] Scanner de port utilise socket version linux [ par firemax ]
Salut :) J'ai une erreur de segmentation et je n'est pas la moindre idée d'ou ca peut venir :( Je n'est aucun warning lors de la compilation mais l
Socket en C [ par RM50Man ]
WSADATA ws; WSAStartup(MAKEWORD(2,0), &ws); &n
socket et serveur smtp [ par lombredudragon ]
Voila j'aimerais savoir si c'est possible d'envoyer un mail de cette maniere:#include #pragma comment(lib, "ws2_32.lib") void main(){ WSADATA WSADat
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|