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

Visual C++ Discussion :

socket et breakpoint sous visual


Sujet :

Visual C++

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut socket et breakpoint sous visual
    salut,

    le programme sur lequel je développe reçoit des données du réseau 50Ko/sec.

    le problème est que je galère pour le débugger, car celui plante suite à une réactivation de l'exécution du programme arrêter momentanément via un point d'arrêt (F9), car j'ai un overflow sur un buffer utilisé pour traiter ce que reçois le socket

    que se passe t-il si on bloque le programme avec un point d'arrêt (sous visual donc) puis qu'on continue l'execution (icone flèche verte) ?

    est-il possible que Windows envoie massivement les données tamporisées dans la pile des sockets de l'OS (je sais pas vraiment comment ça fontionne finalement) au programme lorsque l'on clic sur la flèche verte aprés l'avoir arrêter disons 20 secondes via un point d'arrêt ?

    Merci.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    TCP est un mode flux. Donc il est fort possible qu'en debug, suite à un point d'arrêt, tu reçoives toute une concaténation de messages envoyés par le distant en envois séparés. De toute façon, en mode debug ou en release, avec ou sans point d'arrêt, quand tu as une socket TCP, il faut toujours gérer le fait que c'est une réception en mode flux et non en mode paquet. A toi de mettre en place ce qu'il faut si tu veux retrouver un mode paquet (message LV - longueur/valeur - et/ou marqueur de fin de message).

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    Salut,

    Oui effectivement, à priori j'ai cru comprendre qu'une fois le buffer de la socket plein , un send de la part de l'autre partie aboutie à une fermeture de la session TCP, et je pense c'est cela qui faisait planter mon progamme.

    Peut-être je fais erreur?


    Et sinon comment puis je gérer une session TCP en mode paquet ?

    merci.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par guillaume07 Voir le message
    Peut-être je fais erreur?
    Tu peux mettre un sniffer (Wireshark notamment) en place pour vérifier ce point, et voir si tu prends une fermeture de connexion ou pas.
    Si ton arrêt dure plus de 30 secondes, il est de toutes façons fortement probable que ce soit le cas.

    Citation Envoyé par guillaume07 Voir le message
    Et sinon comment puis je gérer une session TCP en mode paquet ?
    Tu ne peux pas, ça n'a pas de sens en TCP.
    Tu peux par contre gérer toi-même des "paquets", en fonction du protocole que tu implémentes au niveau applicatif. Mais ta socket, elle, sera systématiquement en mode flux.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Tu ne peux pas, ça n'a pas de sens en TCP.
    Tu peux par contre gérer toi-même des "paquets", en fonction du protocole que tu implémentes au niveau applicatif. Mais ta socket, elle, sera systématiquement en mode flux.
    C'est ce que j'avais voulu dire visiblement sans succès
    Citation Envoyé par 3DArchi Voir le message
    De toute façon, en mode debug ou en release, avec ou sans point d'arrêt, quand tu as une socket TCP, il faut toujours gérer le fait que c'est une réception en mode flux et non en mode paquet. A toi de mettre en place ce qu'il faut si tu veux retrouver un mode paquet (message LV - longueur/valeur - et/ou marqueur de fin de message).

Discussions similaires

  1. Utiliser les sockets en C++ sous Visual Studio 2010
    Par yoshi84300 dans le forum Visual C++
    Réponses: 8
    Dernier message: 17/02/2013, 17h46
  2. [MSChart] creation de courbe sous visual C++
    Par gabriel knight dans le forum MFC
    Réponses: 5
    Dernier message: 18/09/2006, 14h32
  3. sockets sous visual c++
    Par loislane dans le forum MFC
    Réponses: 7
    Dernier message: 03/06/2005, 22h49
  4. Réponses: 3
    Dernier message: 28/01/2004, 10h46
  5. Deplacer un curseur dans un RichEdit sous visual c
    Par tweek dans le forum Windows
    Réponses: 7
    Dernier message: 14/01/2004, 00h29

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