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

Windows Forms Discussion :

Problème de taille buffer et de socket


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 99
    Par défaut Problème de taille buffer et de socket
    Bonjour

    Je développe une application client-serveur actuellement, je n'avais aucun soucis pour le moment je développais le client et le serveur sur la même machine. Mais à partir du moment où j'ai commencé à tester sur des machines différentes j'ai rencontré un tas de problèmes réseaux.

    Je me suis aidé des deux classes de Microsoft suivantes :
    Serveur : http://msdn.microsoft.com/fr-fr/library/fx6588te.aspx
    Client : http://msdn.microsoft.com/fr-fr/library/bew39x2a.aspx


    J'ai fais des tests en boucles infinis avec différentes tailles de données transportées et il arrive que les informations n'arrivent pas à destination mais uniquement du client vers le serveur, je reçois qu'une petite partie avant que le serveur ne traite les données (il pense qu'il n'y a plus rien qui arrive et je reçois 2520 bytes sur mes 5860 par exemple)

    Il pense que dans mon readCallBack() de la classe serveur.

    Manquant de connaissance en réseau pourriez vous me dire si c'est du à la classe qui est mal gérée ou si c'est un problème réseau.
    J'ai ensuite poursuivi mes tests et en passant dans la classe StateObject du serveur la valeur de mon buffer à 32 je n'ai plus aucun soucis.
    J'avais démarré à 1024, gros problème
    ensuite 256 beaucoup moins mais il en restait
    et là à 32 je n'en ai plus rencontré pour le moment.

    [EDIT] Dites moi si je me trompe j'essairai demain au boulot, mais j'ai lu un sujet sur le TCP/IP qui parle de segmentation, je me demande si en fait mon handler.avalaible n'est pas la taille qui reste dans mon paquet ce qui pourrait s'averrer faux et donc il faudra que je reteste avec une autre méthode.

    Merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    le réseau n'est pas quelque chose de si carré
    ce n'est pas déterministe et des trames peuvent être coupées en plusieurs parties
    d'ailleurs il y a une limite
    bref le réseau ne fonctionne de la manière j'envoie un truc, le truc est recu tel quel

    c'est pourquoi il est recommandé d'avoir un protocole de dialogue, d'avoir un caracatère de fin par exemple, comme ca si tu recois une trame, tu la concatène à une autre
    et dans cette autre, si tu vois un caractère de fin, tu retire la partie avant et tu la traites etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Une autre solution (pas toujours applicable malheureusement) est d'envoyer au début du transfert la taille des données à transmettre. Comme ça le destinataire continue à essayer de recevoir jusqu'à ce qu'il ait reçu la quantité annoncée

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 99
    Par défaut
    Je vous remercie tous les deux j'ai testé ce matin en rajoutant un mot clé en début de flux pour signaler que ce sont des données qui ne proviennent pas d'une autre source et j'ai ensuite rajouté la taille du message à venir et je ne m'arrête que quand j'ai bien reçu le nombre de données correspondant à la taille de mon message.

    Je ne connaissais pas le système de segmentation et je n'avais donc jamais cherché à connaitre la taille de mon message pensant qu'il ne s'arrêtait qu'à la fin de mon envoi et non pas la fin de mon segment.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [sql server clr] Problème de taille de buffer avec un type dotnet
    Par teddyalbina dans le forum Accès aux données
    Réponses: 0
    Dernier message: 14/05/2010, 15h34
  2. [.net] Type de données ulong problème de taille de buffer
    Par teddyalbina dans le forum Développement
    Réponses: 1
    Dernier message: 14/05/2010, 15h24
  3. Régler taille Buffer Socket
    Par Jazys dans le forum Flex
    Réponses: 3
    Dernier message: 23/04/2010, 00h32
  4. taille du Buffer de la Socket ?
    Par HamzuS The Great dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/09/2009, 15h06
  5. Réponses: 6
    Dernier message: 05/12/2008, 21h19

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