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 :

10014 avec WSASend


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Points : 29
    Points
    29
    Par défaut 10014 avec WSASend
    Bonjour,
    Je réalise un logiciel client/serveur sous windows je souhaite utiliser les fonction WSA. Jusque la pas de soucis, tout fonctionne bien. Mon souci interviens lorsque je souhaite envoyer un int via WSASend(), l'envoi échoue et je reçois l'erreur suivante:

    10014 (The system detected an invalid pointer address in attempting to use a pointer argument of a call. This error occurs if an application passes an invalid pointer value, or if the length of the buffer is too small. )

    le pointeur me semble correct et du coup après avoir pas mal chercher/tester je suis bloqué. Je n'ai ce problème qu'avec des int.

    voici la fonction en question:

    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
    void				envoi_int(int fd, int d)
    {
    	WSABUF			DataBuf;
    	DWORD			SendBytes;
            int				i;
     
    	DataBuf.buf = (char *) d;
    	DataBuf.len = sizeof(int);
     
      if ((i = WSASend(fd, &DataBuf, 1, &SendBytes, MSG_OOB, 0, NULL)) != 0)
      {
    	  i = WSAGetLastError();
    	  std::cout << "error :" << i << std::endl;
      }
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par aicou Voir le message
    Bonjour,
    Je réalise un logiciel client/serveur sous windows je souhaite utiliser les fonction WSA. Jusque la pas de soucis, tout fonctionne bien. Mon souci interviens lorsque je souhaite envoyer un int via WSASend(), l'envoi échoue et je reçois l'erreur suivante:

    10014 (The system detected an invalid pointer address in attempting to use a pointer argument of a call. This error occurs if an application passes an invalid pointer value, or if the length of the buffer is too small. )

    le pointeur me semble correct et du coup après avoir pas mal chercher/tester je suis bloqué. Je n'ai ce problème qu'avec des int.

    voici la fonction en question:

    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
    void				envoi_int(int fd, int d)
    {
    	WSABUF			DataBuf;
    	DWORD			SendBytes;
            int				i;
     
    	DataBuf.buf = (char *) d;
    	DataBuf.len = sizeof(int);
     
      if ((i = WSASend(fd, &DataBuf, 1, &SendBytes, MSG_OOB, 0, NULL)) != 0)
      {
    	  i = WSAGetLastError();
    	  std::cout << "error :" << i << std::endl;
      }
    }
    DataBuf.buf = (char *) &d;

    Sans quoi, WSAsend va tenter de lire les donnée qui sont située à l'addresse indiquée dans d, et non pas d lui même.

    Accessoirement, tu aurais utilisé static_cast<> au lieu d'un cast C, l'erreur aurait été diagnostiquée
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    le souci si je fait ca c'est qu'a la réception je n'ai pas la bonne valeur.

    EDIT: en fait l'erreur était à la réception, tout fonctionne bien merci.

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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