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 :

problème socket et thread


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 16
    Points
    16
    Par défaut problème socket et thread
    Bonjour,
    j'ai un serveur que j'aimerais bien tester sa charge.
    pour cela j'ai développé un client qui implémente 250 thread. chaque thread devra envoyer des messages periodiquement selon une loi de poisson sur une socket qu'il ouvre en TCP avec le serveur.
    Coté serveur, j'implémente un select qui traite toute les connexion entrante. Tout les envoie sont fait en mode TCP.
    tous les messages qu'envoie mes thread sont des messages d'une taille inférieure à 1000 Octets.

    En faisant des test j'ai remarqué que mon serveur génère quelques erreurs lors de la manipulation des messages recus. en débuggant j'ai remarqué que le la fonction recv recoit parfois des messages d'une taille de 1448 Octets ((j= recv(i, buf, sizeof(buf), 0)) = 1448)(dépassement de la Max SDU qui est de 1500 dans le cas d'ethernet) malgres que les messages que j'envoie sont toujours inférieur à 1000 Octets.
    Svp, y a t'il quelqu'un qui a eu un pb pareil. Je ne sais pas si le problème viens de l'utilisation de socket paralèlle pour l'envoie avec plusieurs threads ou pas !!!!
    De l'aide svp !!!!!

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Il n'y a pas de relation directe entre le rythme d'envoi des données et la taille reçue par un recv().
    Si deux messages de 1000 octets sont envoyés suffisamment vite, le début du second message peut être transmis juste après le premier.
    C'est au recv() de savoir combien tu veux recevoir. Si tes messages font 1000 octets, passe juste une taille de 1000 au buffer si tu veux être sûr de ne pas recevoir plus à la fois...

  3. #3
    Provisoirement toléré
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par dc.sara Voir le message
    Coté serveur, j'implémente un select qui traite toute les connexion entrante. Tout les envoie sont fait en mode TCP.
    tous les messages qu'envoie mes thread sont des messages d'une taille inférieure à 1000 Octets.
    Justement, 1000 octets ou pas, TCP n'est pas un protocole de messages, c'est un protocole de flux. Les limites des messages ne sont préservées : il faut qu'ils soient décodables mis bout à bout. (Spécifie la taille de chaque message dans l'en-tête de message.)

    Citation Envoyé par dc.sara Voir le message
    En faisant des test j'ai remarqué que mon serveur génère quelques erreurs lors de la manipulation des messages recus. en débuggant j'ai remarqué que le la fonction recv recoit parfois des messages d'une taille de 1448 Octets ((j= recv(i, buf, sizeof(buf), 0)) = 1448)(dépassement de la Max SDU qui est de 1500 dans le cas d'ethernet)
    dépassement de quoi? 1448 < 1500

    Citation Envoyé par dc.sara Voir le message
    Svp, y a t'il quelqu'un qui a eu un pb pareil. Je ne sais pas si le problème viens de l'utilisation de socket paralèlle pour l'envoie avec plusieurs threads ou pas !!!!
    "socket parallèle" : quid?

Discussions similaires

  1. [WD16] Problème : Socket et thread (communication automate)
    Par spiralfriz dans le forum WinDev
    Réponses: 11
    Dernier message: 27/09/2012, 17h51
  2. [Linux] Problème Socket + Thread
    Par PoZZyX dans le forum Réseau
    Réponses: 0
    Dernier message: 25/03/2010, 15h06
  3. Problème de conception Thread et Socket
    Par NeqO55 dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 15/10/2009, 09h57
  4. [Réseau] Problème socket
    Par neenee dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 18/01/2005, 15h26
  5. Sockets et threads...
    Par Kiff dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 27/07/2004, 17h35

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