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

Qt Discussion :

QSocket et envoi des messages


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Points : 39
    Points
    39
    Par défaut QSocket et envoi des messages
    J'ai deux executables : un client et un serveur.
    J'utilise la méthode de base qui consiste à faire un
    • connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));

    pour lire les messages entrant, et un
    • QTextStream os(socket);
    • os << texte<<"\n";

    pour envoyer un message.

    Mon probleme se situe dans la gestion des envois de message.
    Lorsque mon serveur envoie par à-coup des megas de donnée, mon client les recoit en polling (ex: tout d'un coup au bout de 20 secondes).
    J'ai beau mettre des flush, retourner dans la boucle d'evenement apres avoir stocké les messages (pour les traiter ailleurs que dans l'appel de readyRead()), ca ne change rien à l'affaire

    Comment faire pour que mon client recoive son message des qu'il est envoyé en conservant la notion d'asynchrone? (il ne fait rien d'autre que d'attendre. Il affiche quand-même quelques informations mais le temps de calcul est négligeable)

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Je vais voir si en manipulant le QSocketNotifier, ça change quelque chose.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Je met 40 secondes pour recuperer une chaine de caractere de 3173263 octets.
    N'y a t'il pas un moyen d'aller plus vite?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Bon, et bien je me reponds tout seul:
    Il faut changer la taille du tampon de lecture et d'écriture.

    Coté Serveur (envoyeur de donnée):
    s->socketDevice()->setSendBufferSize(x); Où x est le nombre d'octet du tampon

    Coté Client:
    s->socketDevice()->setReceiveBufferSize(x);

    Et du coté Serveur, il faut redonner la main à la boucle d'evenement apres avoir envoyer le message, pour envoyer sans polling le message. (utiliser qApp->processEvents(y); ne sert à rien).

    Là, ça dure au plus 2 secondes.

    Merci moi

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

Discussions similaires

  1. Mutt et gmail : envoi des messages impossible
    Par MaliciaR dans le forum Distributions
    Réponses: 5
    Dernier message: 03/10/2009, 20h36
  2. [OL-2007] problème d'envoi des messages
    Par barchoui dans le forum Outlook
    Réponses: 2
    Dernier message: 22/05/2009, 19h24
  3. [Forms]Envoi des messages depuis une interface Forms
    Par MOUELY Daniel dans le forum Forms
    Réponses: 1
    Dernier message: 26/04/2007, 11h59
  4. [AIX] Envoi des message vers windows
    Par IForum dans le forum AIX
    Réponses: 1
    Dernier message: 19/10/2006, 08h45

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