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 :

"bloquer un signal"


Sujet :

Qt

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Points : 115
    Points
    115
    Par défaut "bloquer un signal"
    Slt, j'ai créé un client réseau et je déroute le signal de la socket (qui s'émet lors de la réception d'un paquet) vers un slot à moi. Seulement, je voudrais rester dans ce slot même si tout n'est pas encore arrivé et donc attendre que ça arrive mais à l'intérieur du slot. Seulement, si j'attends que des paquets arrivent et qu'il arrivent, comment bloquer la réception du signal qui ne m'est plus d'aucune untilité ? (et le réactiver à la fin bien sûr !)

    Merci d'avance !

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    J'ai pas bien compris ce que tu veut faire mais regarde ceci
    http://qt.developpez.com/doc/latest/...l#blockSignals

  3. #3
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Ce n'est pas la bonne façon de faire. Typiquement, il faut bufferiser ce qui arrive jusqu'à avoir reçu ce que tu attends (une taille indiquée au début du paquet ou un jeton de fin par exemple). Une fois ton paquet reçu, tu l'envoies vers ta "moulinette" pour le traiter, sans oublier de nettoyer le buffer, et bufferiser les données qui serait arrivée en même temps, mais juste après la fin de ton paquet.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Points : 115
    Points
    115
    Par défaut
    C'est ce que je faisais mais au lieu de rentrer dans un buffer, je lisais que quand tout etait arrivé ! Mais là, j'attends genre un int, puis un autre int pour la taille de la chaine qui suit puis un autre int, etc... qui se répéte de manière cyclique. Donc, je pensais faire ça à la C#, dans une boucle, je lis mon int puis mont int pour la taille de la string, puis la string, etc.. N fois (avec N que le serveur m'envoie...)

    Merci d'avance !

    EDIT : @yan : lien interessant mais ça bloque toutes ses émissions de signaux, pas un en particulier, une connection vers rien est-elle possible ?

    EDIT2 : La solution n'etait pas loin du loin de yan ! Merci !

  5. #5
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par barbug Voir le message
    C'est ce que je faisais mais au lieu de rentrer dans un buffer, je lisais que quand tout etait arrivé ! Mais là, j'attends genre un int, puis un autre int pour la taille de la chaine qui suit puis un autre int, etc... qui se répéte de manière cyclique. Donc, je pensais faire ça à la C#, dans une boucle, je lis mon int puis mont int pour la taille de la string, puis la string, etc.. N fois (avec N que le serveur m'envoie...)
    Et s'il y a un problème de connexion, boum, tu restes coincé dans ton slot ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Points : 115
    Points
    115
    Par défaut
    euh, je penses pas... Si je ne bloque pas le signal des erreurs, je les reçois quand même ! Non ?

  7. #7
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Pas si tu attends indéfiniment dans ton slot, mais bon, faut voir comment tu as codé l'ensemble.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Points : 115
    Points
    115
    Par défaut
    Aille... Bon, je vais essayer de bufferiser dans ce cas !

    Merci du conseil !

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

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