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

Réseau Discussion :

QTcpSocket, pas de bind


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut QTcpSocket, pas de bind
    Bonsoir,

    J'ai commencé une appli qui utilise Qt pour la GUI mais aussi pour le réseau, et j'arrive au point ou je voudrais pouvoir me binder à une interface en particulier, mais en plus de ca, je voudrais avoir un timeout.

    J'ai trouvé des méthode pour bypasser le faite que les QTcpSocket n'ont pas de méthode "bind", ca revient à recréer une méthode connect qui fait le bind et la connexion.

    Le soucis c'est que j'en arrive a faire des choses sales et non portable parce que je voudrais en plus de ca un timeout

    J'ai essayé de trouver le fichier source de Qt afin de surcharger connectToHost pour y rajouter mon bind (elle possède un timeout), c'est probablement une mauvaise idée ?

    Avez vous une autre idée ?

    J'en suis venu a prendre des bouts de code de la SFML mais il y a beaucoup de dépendance, j'ai aussi regarder du coté de boost::asio.

    Je voudrais pourtant un truc pas bien malin, juste une abstraction qui gère bind, et le connect avec un timeout.

    Sinon j'aurais voulu savoir votre avis quelle serait la lib c++ réseau la plus "rapide", je pense biensur a boost::asio mais il doit y'en avoir d'autre.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    Effectivement pour l'instant c'est pas faisable directement avec Qt: http://bugreports.qt.nokia.com/browse/QTBUG-121

    Du coup:
    - soit tu tentes le patch de la merge request (mais du coup il faut un Qt patché)
    - soit tu attends que ça soit dedans
    - soit tu fais du code non portable, sans doute threadé pour le timeout, pour que ça marche :/. Tu peux normalement t'en tirer juste avec des appels systèmes (pour le bind() / connect()), puis Qt pour les threads, et enfin un setSocketDescriptor pour utiliser ta socket système avec l'API Qt.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    J'allais me lancer dans boost, tu crois que je risque de rencontrer des problèmes si j'utilise des threads Qt

  4. #4
    Membre expérimenté

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Par défaut
    Bonjour,

    Je pense que l'utilisation de asio est une bonne chose; par rapport aux patch de Qt.
    Je ne saurais pas dire si il va y avoir des soucis avec QThread, mais j'aurais tendance à utiliser directement le module thread de Boost.

    Car tant qu'à plonger dans Boost, autant y aller franchement

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    Citation Envoyé par anat1212 Voir le message
    J'allais me lancer dans boost, tu crois que je risque de rencontrer des problèmes si j'utilise des threads Qt
    Jamais essayé, désolé.
    Quelqu'un avait déjà posé la question en 2008: http://www.developpez.net/forums/d59...ost-thread-qt/ et on lui avait répondu d'utiliser QThread, qui semble plus simple à gérer dans une appli Qt (évidemment) que ceux de boost.

    Perso, ayant une plus grande connaissance de Qt, j'utiliserais les QThread, mais c'est principalement parce que j'ai l'habitude de les utiliser.

Discussions similaires

  1. [Spring MVC],[<form:input] pas de binding !
    Par Invité dans le forum Spring Web
    Réponses: 4
    Dernier message: 20/12/2007, 16h44
  2. [rmi] Pas de bind sur un Registry distant
    Par Batoche dans le forum Services Web
    Réponses: 2
    Dernier message: 10/12/2007, 15h21
  3. Réponses: 3
    Dernier message: 07/09/2007, 09h54
  4. [Tkinter] Probleme de Bind clavier : marche pas :(
    Par topzozo dans le forum Tkinter
    Réponses: 2
    Dernier message: 27/05/2007, 02h17
  5. Bind ou pas Bind?
    Par jonzuzu dans le forum MFC
    Réponses: 4
    Dernier message: 19/03/2004, 10h00

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