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 :

Interruption d'échanges de données en TCP/IP Localhost


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut Interruption d'échanges de données en TCP/IP Localhost
    Bonjour,

    Je me permets de poster ce message afin de demander le renseignement suivant:
    Je dois envoyer des données entre deux threads (principalement de l'un vers l'autre), et pour ce faire, j'utilise un lien TCP-IP en localhost.

    Le serveur attend de recevoir une requête du client, et une fois reçue, le serveur envoie les données au client, jusqu'à la prochaine réception d'une requête…

    Cela fonction très bien (je suis sous W10, GCC, IDE Code::Blocks), mais la communication s'interrompe au bout de 400 000 échanges environ.

    Je me demandais si c'était normal et si l'un d'entre vous avait déjà connu ce problème, ou si il y avait un bog dans l'un de codes.

    Merci par avance,
    Stéphane

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    149
    Par défaut
    Bonjour,

    Je vous conseille de lancer votre serveur dans un débogueur et d'utiliser un script pour reproduire l'équivalent de 400 000 connexion en un temps court.
    ainsi, vous devriez reproduire le bogue assez rapidement. D'ailleurs, cela peut être une fuite de mémoire, ou une limite mal gérée (dépassement de tableau ?).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    Probablement un bug dans un code, lancer le serveur en local est le plus simple pour reproduire et détecter le problème.
    Assures-toi de vérifier tous les retours de tous les appels à l'API socket.
    Log tout problème ou anormalité.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut
    Bonjour, et merci bien à vous deux pour votre réponse… !!

    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Je vous conseille de lancer votre serveur dans un débogueur et d'utiliser un script pour reproduire l'équivalent de 400 000 connexion en un temps court.
    ainsi, vous devriez reproduire le bogue assez rapidement.
    Ah, je viens de me rendre compte de quelque chose. En fait, le client ne se connecte qu'une seule fois sur le serveur, pour ensuite réaliser ces 400 000 échanges de données. Est-ce qu'il faudrait justement que le client se connecte à chaque fois, pour chaque trame de données ?

    J'ai posté le petit code de transmission si jamais une grosse erreur vous apparaissait ?
    Encore merci pour votre aide.

    Bien à vous,
    Fichiers attachés Fichiers attachés

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    En regardant rapidement, le code est très médiocre.
    Tu trouveras dans ma signature comment s'écrit un meilleur code réseau et faire de façon très simple ce que tu veux.

    En repassant plus en détail:
    - Ton code est du C avec 1 classe
    - Le nommage des variables est archaïque et rend le tout moins lisible
    - Certaines variables membres sont inutiles et d'autres inutilisées
    - L'indentation est aléatoire
    - Des ; inutiles un peu partout
    - Pourquoi utiliser Winsock 2.0 et non 2.2 ?
    - À quoi bon avoir des ifdef _WIN32 quand le code est totalement orienté Windows ?
    > WSAStartup n'existe que sous Windows
    - WSAStartup retourne un code d'erreur, faudrait pas l'ignorer
    - Un socket tcp client n'a pas à se bind
    - Le send du client est foireux, cb est pas initialisé...
    - Le client essaye d'envoyer un # puis reçoit tout
    > Le serveur envoit tout puis attend un #, sur réception il s'arrête
    >> Relis ces phrases et dis-moi si c'est logique
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Échange de données en fichier ASCII
    Par PierreV01 dans le forum Oracle
    Réponses: 4
    Dernier message: 19/12/2006, 16h47
  2. [Système] Échange de données entre serveurs
    Par bpriscil dans le forum Langage
    Réponses: 7
    Dernier message: 19/05/2006, 09h51
  3. échange de données
    Par elpati dans le forum Oracle
    Réponses: 2
    Dernier message: 17/10/2005, 13h54
  4. En quoi XML est-il un moyen universel d'échange de données ?
    Par Pomalaix dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 27/01/2003, 11h29

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