IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

sockets et release


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    57
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 57
    Par d�faut sockets et release
    Bonjour,

    Je travaille avec les sockets, en mode debug tout allait bien mais en mode release je ne re�ois pas les m�me informations
    Il doit y avoir un probl�me dans mon code mais je n'arrive pas � voir d'o� le probl�me provient

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    	char clnt[1024];
    	char buf[1024];
     
     
    	WORD wVersionRequested;
    	WSADATA wsaData;
    	wVersionRequested = MAKEWORD(2, 0);
    	if (WSAStartup(wVersionRequested, &wsaData))
    	{
    		MessageBox(FindWindow(NULL,""),"Erreur WSAStartup","Erreur",MB_ICONSTOP);
    		return 2;
    	}
     
     
     
    	SOCKET s;
    	s = socket(AF_INET,SOCK_DGRAM,0);
    	if(s==INVALID_SOCKET)
    	{
    		MessageBox(FindWindow(NULL,""),"Erreur Socket","Erreur",MB_ICONSTOP);
    		return 2;
    	}
     
     
     
    	SOCKADDR_IN sain;
    	sain.sin_family = AF_INET;
    	sain.sin_port = htons(atoi(strPort));
    	sain.sin_addr.s_addr = inet_addr(strIp);
     
     
    	if(connect(s, (SOCKADDR *)&sain, sizeof(sain))==SOCKET_ERROR)  
    	{
    		MessageBox(FindWindow(NULL,""),"Impossible de se connecter au serveur","Erreur",MB_ICONSTOP);
    		return 2;
    	}
     
     
    	strcpy(clnt,"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00" );
     
    	if(send(s, clnt, strlen(clnt), 0)==SOCKET_ERROR)
    	{
    		MessageBox(FindWindow(NULL,""),"Impossible de transmettre la requète","Erreur",MB_ICONSTOP);
    		return 2;
    	}
     
    	recv(s,buf,strlen(buf),MSG_PEEK);
    	// Le contenu des infos est dans buf
    	//MessageBox(FindWindow(NULL,""),buf,"",MB_ICONSTOP);
     
    	// On appelle la fonction de tri
    	TrieInfos(buf, TabSettings, TabJoueurs);
     
     
     
    	if(closesocket(s)==SOCKET_ERROR)
    		return 2;
     
     
        WSACleanup();

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Je pense que le probl�me se trouve ici
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    recv(s,buf,strlen(buf),MSG_PEEK);
    Il faudrait plut�t
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    recv(s,buf,sizeof(buf),MSG_PEEK);
    En effet, ta variable buf n'est pas initialis�e avant cet appel et donc strlen(buf) est ind�fini (ce qui explique probablement le comportement diff�rent en release et en debug
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Il me parait bien bizarre, le premier param�tre de ton MessageBox()...
    Ne peux-tu pas tout simplement lui passer NULL ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    57
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 57
    Par d�faut
    ram_0000
    merci ca venait de ca

    M�dinoc
    j'ai corrig� ca

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    57
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 57
    Par d�faut
    bonsoir,

    j'ai un autre probl�me avec le m�me code

    il se situe ici
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    	MessageBox(NULL,"test avant recv","Erreur",MB_ICONSTOP);
     
    	recv(s,buf,sizeof(buf),MSG_PEEK);
     
    	MessageBox(NULL,"test apres recv","Erreur",MB_ICONSTOP);
    Avec certains serveurs exemple: 79.133.32.88:27015 le programme se bloque au niveau de la fonction recv.
    Le serveur r�pond bien au ping cependant le service sur ce port ne marche pas.
    Savez-vous comment je peux arranger ca afin de d�cter que je ne vais pas avoir de r�ponse ?

  6. #6
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    la fonction recv() est bloquante, c'est � dire qu'elle ne quittera pas tant qu'il n'y aura pas eu un paquet re�u.

    Pour faire ce que tu veux, avant de faire le recv(), il faut faire select() avec un timeout. Lorsque la fonction select() quitte, tu sais si c'est � cause du timeout ou alors � cause d'une r�ception possible sur un socket et dans ce cas l�, tu peux faire ton recv() bloquant car tu es s�r qu'il y a quelque chose � lire.

    man select ici http://www.linux-kheops.com/doc/man/.../select.2.html

    Au fait, comment cela se fait que tu n'as pas de r�ponse sur certains serveurs et que sur d'autres, cela marche ?
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum D�veloppement
    R�ponses: 5
    Dernier message: 30/05/2006, 13h02
  2. raw socket et langage c
    Par SlayDave dans le forum D�veloppement
    R�ponses: 2
    Dernier message: 29/08/2002, 19h09
  3. socket
    Par ben91 dans le forum D�veloppement
    R�ponses: 5
    Dernier message: 13/08/2002, 11h04
  4. Socket:Envoyer du texte d'un serveur vers tout les clients
    Par cedm78 dans le forum Web & r�seau
    R�ponses: 7
    Dernier message: 01/08/2002, 16h40
  5. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    R�ponses: 5
    Dernier message: 29/07/2002, 00h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo