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 :

TcpClient bloquant qui ne bloque pas


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Par défaut TcpClient bloquant qui ne bloque pas
    Bonjour,
    J'essaye d'envoyer un fichier en utilisant un buffer de 32 008 octets.
    Malgré que la proprieté Blocking de mon socket est bien à True, il arrive souvent que je ne reçois pas le nombre d'octets désiré.
    Ce probleme diminue si je fais Thread.sleep(100); juste avant le read ou bien si je diminue la taille du buffer.
    Voici les bouts de code intérressant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public const int BufferSize = 32008;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TcpClient client = new TcpClient(monPeer.ipaddress, monPeer.port);
    monPeer.monTcpClient = client;
    monPeer.monTcpClient.ReceiveBufferSize = BufferSize;
    monPeer.monTcpClient.Client.Blocking = true;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int retour = client.GetStream().Read(bufferFichier, 0, BufferSize);
    if (BufferSize != retour)
    {
     
    }
    Merci

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Et quelle est la question ? ...
    Sinon peut être qu'envoyer plusieurs petits morceaux fonctionnera mieux qu'un seul morceau de 32k ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Par défaut
    Je pensais que c'était clair
    Je voudrais savoir pourquoi mon read ne se bloque pas alors qu'il devrait le faire.
    J'ai résolu le probleme en répétant les read jusqu'a que j'ai le nombre d'octets voulue.
    Mais bon ça fait un peu barbare comme methode je trouve.

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Bah personnellement quand il s'agit d'échanger des données sur un réseau avec les classes du Framwork, je préfère prendre toute idée et toute fonction avec des pincettes.
    Par exemple, pour moi un WebClient.DownloadFileAsync se termine parfois sans appeler l'évènement Completed alors que DownloaFile lui l'appelle toujours. Idem, il y a des fois où l'on ne sait pas trop si ça a réussit ou non alors bon ...

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

Discussions similaires

  1. Message attente qui ne bloque pas l'affichage en background
    Par gentyjp dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/05/2008, 00h25
  2. Temporisation qui ne bloque pas l'application
    Par Zorgloub dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/02/2008, 16h55
  3. alert() qui ne bloque pas le chargement de la page ?
    Par Cofondinde dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/08/2007, 10h31
  4. recvfrom qui ne bloque pas ?
    Par innosang dans le forum Réseau
    Réponses: 1
    Dernier message: 21/06/2007, 11h11
  5. Réponses: 8
    Dernier message: 25/11/2005, 18h38

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