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 :

Exemples de programmes client/serveur


Sujet :

Réseau

  1. #1
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut Exemples de programmes client/serveur
    Bonjour. Je voudrais juste savoir si vous connaissez des exemples de programmes (ou des tuto) en clients/serveur avec base de données. Je demande ça car j'ai un peu de mal à comprendre comment cela fonctionne (surtout au niveau des requêtes des clients sur une base de données serveur). J'ai déjà regardé les exemples network de Qt et pense qu'il faut utiliser QTcpServer et QTcpSocket (je peux me tromper...) mais sinon.... Je nage dans le brouillard.
    Un coup de main (ou de pied ) serait le bienvenu !
    Pourquoi faire aujourd'hui ce qu'on peut faire demain ?

  2. #2
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    Salut, je ne connais pas du tout comment c'est foutu au niveau des bases de données, mais je ne suis pas sûr que tu doives utiliser QTcpSocket ou QTcpServer ? Utilises-tu une base SQL ?
    Si oui, dans ce cas alors tu dois pouvoir avoir de quoi faire avec un QSqlDatabase (documentation de QSqlDatabase)

    Je pense qu'ensuite tu dois pouvoir faire tous tes traitements avec QSqlQuery (documentation de QSqlQuery)

    Apparement, y'a un composant qui semble interessant pour trier/filtrer facilement : QSqlTableModel (documentation de QSqlTableModel) que tu peux utiliser conjointement avec un QSqlRecord (documentation de QSqlRecord)

    voilà, en espérant que cela t'aide un peu
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

  3. #3
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Merci de ta réponse MacPro.
    Ma base de donnée a déjà été crée. En fait je me pose surtout des questions au niveau de la communication (affichage de résultat...) entre le poste client et le poste serveur et notamment sur les classes a utilisé pour cela...
    Pourquoi faire aujourd'hui ce qu'on peut faire demain ?

  4. #4
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Le principe est assez simple.

    Tu utilises QSqlDatabase pour te connecter. (des fonctions statiques sont disponibles si tu te connectes à une seule base)

    Ensuite, tu peux utiliser QSqlQuery en précisant ou pas la base de données utilisées. C'est pratique pour les requêtes "brutes" qui renvoient des données textes.

    Tu peux aussi utiliser le modèle-vue de Qt afin de faciliter l'optimisation de l'affichage et de la modification des données.
    Pour le SQL, il s'agit d'utiliser
    - QSqlQueryModel pour les données propres à une requête,
    - QSqlTableModel pour les données propres à une table,
    - ou ton propre modèle construit grâce à QSqlQuery.
    Ces modèles seront à lier avec la vue de ton choix.

    L'aspect réseau est géré de manière transparente.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  5. #5
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Envoyé par FloMo
    L'aspect réseau est géré de manière transparente.
    ¤ Mode boulet [On]

    Donc si je comprends bien, on indique sur la version cliente de l'application là ou se situe la BDD ?
    Il faut utiliser setHostName pour indiquer la BDD pour envoyer les requêtes par le réseau ?
    Si c'est ça, je n'ai pas besoin des classes QTcpSocket et QTcpServer ?
    Je demande car l'aspect réseau des bases de données n'est pas vraiment expliqué.

    ¤ Mode boulet [Off]

    Désolé si mes questions paraisses simples mais je m'embrouille un peu et ne sais pas si QSql suffit pour gérer cela.
    Pourquoi faire aujourd'hui ce qu'on peut faire demain ?

  6. #6
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Et bien en fait, la partie réseau est gérée par le pilote de base de données lié au plugin Qt.

    Si tu veux une aide plus efficace, il faudrait que l'on sache déjà sur quelle base de données tu es.

    Il faudrait aussi savoir si ton plugin de base de données est actif au sein de ton installation Qt. (dans les démos fournies avec Qt, il y a une application SQL qui permet d'effectuer des requêtes sur les bases de données disponibles)
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  7. #7
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Ma BDD est de type QSQLITE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    Sinon j'ai déjà pu effectuer des requetes sur cette base (sans l'aspect réseau).
    Pourquoi faire aujourd'hui ce qu'on peut faire demain ?

  8. #8
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Ca change beaucoup de choses car SQLite ne dispose pas d'un modèle client-serveur via le réseau comme c'est le cas pour Oracle, PostgreSQL, MySQL...

    Il faut donc que tu puisses accéder à cette base de donnée via un protocole permettant de partager un système de fichier. (SMB, NFS ou autre) C'est donc à toi de gérer ça au niveau de ton système d'exploitation car ce n'est pas Qt qui gère le système de fichiers.

    Dès lors, tu pourras accéder à la base de données comme si tu accédais à un fichier classique.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  9. #9
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut

    Comment faire alors pour que Qt gère le réseau et la base de donnée?
    Faut-il que je change le type de la base de donnée?
    Pourquoi faire aujourd'hui ce qu'on peut faire demain ?

  10. #10
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par anakronox Voir le message
    Comment faire alors pour que Qt gère le réseau et la base de donnée?
    Ce sont 2 choses distinctes.
    Soit tu réalises ton propre client-serveur de base de données avec Qt, auquel cas Qt va gérer le réseau et les données. Solution lourde et sans intérêt.
    Soit tu utilises une système de base de données existant (MySQL, PostgreSQL). Dans ce cas, tu utiliseras le plugin Qt adapté. Ce même plugin utilisera la bibliothèque lié au système de base de données.

    Citation Envoyé par anakronox Voir le message
    Faut-il que je change le type de la base de donnée?
    Je pense que cette idée est envisageable.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  11. #11
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Donc si, par exemple je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    Quelle est la methode la plus efficace et la plus simple pour effectuer les requetes en client/serveur ?
    Pourquoi faire aujourd'hui ce qu'on peut faire demain ?

  12. #12
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Ca fonctionne comme avec SQLITE, sauf que tu précises le nom d'hôte (ou l'adresse IP) , le nom d'utilisateur, le mot de passe et le nom de la base.

    Regarde la documentation Qt pour ça. Il y a des exemples.

    Après, le fonctionnement est similaire.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

Discussions similaires

  1. Aide sur un programme Client Serveur
    Par clubmed01 dans le forum Linux
    Réponses: 33
    Dernier message: 29/05/2012, 10h22
  2. Réponses: 7
    Dernier message: 29/05/2009, 20h47
  3. programme client serveur mode TCP/UDP en java
    Par ouss01 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 03/04/2009, 09h05
  4. build.xml pour un programme client serveur
    Par donyas dans le forum ANT
    Réponses: 5
    Dernier message: 22/12/2006, 23h49
  5. architecture d'un programme client/serveur asynchrone (win)
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 05/09/2003, 23h59

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