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 :

C,C++,Qt et manipulation et stockage d'informations


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 62
    Par défaut C,C++,Qt et manipulation et stockage d'informations
    Bonjour la communauté ....

    Je me présente

    J'ai commencé par la programmation en C à l'école, il y a déjà qq années.

    Je commence a apprendre le C++ et son langage orienté objet via le Net.

    Voici mes expériences.

    "sur 10"

    XHTML : 7
    CSS : 6
    PHP : 4
    MySQL : 4
    Java EE: 0

    C : 7
    C++ : 7
    Java : 0

    Qt : 7

    je me suis intéressé à Qt et maitrise quasi 40% des Objets proposée.

    Actuellement je bosse pour mon plaisir et + si affinité sur un projet qui est un jeux de cartes sur le Net et j'utilise actuellement Qt comme interface.

    Mon application et plus ou moins fini à 50% ,mais a ce stade je dois prendre des décision cruciales et je me pose encore pas mal de questions.

    Pour ce faire j'ai crée 3 application :

    1) Une application Serveur
    2) Une application Administrateur
    3) Une application Client

    Je n'ai aucun souci de pour implémenté les communications entre les différents clients.

    Les questions que je me pose sont:

    1) Le stockage des informations statique confidentiel sur l'application serveur

    Actuellement j'utilise des fichiers binaires et je stock soit une List de structures fiches via des Objets Qt "QDataStream ou soit je stock directement des structures fiches et les récupére via fseek "comme au bon vieux temps" sachant que ma structure fiche dois avoir une taille fixe.

    je trouve la première méthode plus lourd à implémenter à cause de l'utilisation de structures qui peuvent être soit de tailles fixes ou variables mais très pratique.

    pour la deuxième méthode je trouve que l'utilisation de structure de tailles fixes avec les méthodes fseek,fwrite,... dois etre plus rapide pour accéder à des gros fichiers binaire si on connais ça position dans le fichier???

    De plus pas besoin d'implémenter des QDataStream pour mes
    "typdef structures fiches".

    Le probléme c'est les conversion lourde des données de tailles fixes vers des objets comme QString , QVariant, QList,....

    je m'y perd et me pose des questions...

    la conclusion pas Envie de réécrire 36x mon code pour les 3 application!!!

    2) Le stockage des informations Dynamique confidentiel sur l'application serveur

    Idem mais ici je stock des information dynamique venant des applications client ,administrateur et serveur

    Ne devrais pas utiliser des base de Données...???? au lieu de fichiers binaires.

    3) Si j'ai beaucoup de client , le multi threading une solution plus rapide???

    4) Qt et son interface , une solution Viables pour un jeux de cartes sur le réseaux???

    5) Vu l'inexpérience en Java, je sais pas quoi en penser à se stade de développement de mon projet , qu'en pensez vous???

    Voila je pense que j'ai fini pour aujourd'hui avec mes question existentielles.

    Et merci d'avance .

  2. #2
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    1) et 2) Une bonne vieille BDD. Je crois que QT à des trucs pratiques pour la communication avec certaine BDD.

    3) Les client ne sont pas lancé par la machine cliente ??? Qu'appelles-tu un "client" ?

    4) Pourquoi pas.

    5) Java ???? Que vient-il faire ici lui ? Si ta question est : doit-je envisager une migration ? la réponse, au vue des élément, et nom ! Maîtriser son framework te demandera du temps, et je vois pas quelle avantage tu y gagneras...

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Bonjour,
    Citation Envoyé par Lavock Voir le message
    1) et 2) Une bonne vieille BDD. Je crois que QT à des trucs pratiques pour la communication avec certaine BDD.
    Je confirme pour les avoir utilisés... ça marche très bien ! Regarde du coté du Module QtSql:http://qt.developpez.com/doc/latest/qtsql/ ( explications dans les cours et tutoriels Qt )

    3) Les client ne sont pas lancé par la machine cliente ??? Qu'appelles-tu un "client" ?
    Le multithreading doit bien sûr se trouver du coté serveur, et est INDISPENSABLE, non pas avec beaucoup de clients, mais à partir du moment ou tu as deux clients connectés en même temps sur ton serveur !!!

    4) Pourquoi pas. (ndr: GUI en Qt)
    Oui bien sûr ! (T'auras compris que j'aime bien Qt ).
    Il faut juste bien penser la GUI (tu auras le même problème quelque soit ton API), pour ne pas "geler" la GUI lors des communications avec le serveur...

    5) Java ???? Que vient-il faire ici lui ? Si ta question est : doit-je envisager une migration ? la réponse, au vue des élément, et nom ! Maîtriser son framework te demandera du temps, et je vois pas quelle avantage tu y gagneras...
    Tout à fait d'accord... Si tu maitrise le C++ et déjà une partie de Qt restes-y !
    Cependant:
    je me suis intéressé à Qt et maitrise quasi 40% des Objets proposée.
    Sans remettre en cause tes connaissance, je ne pense pas que tu connaisses 40% de Qt, ou alors tu en es déjà un grand expert... Qt est très très très gros...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 62
    Par défaut
    Merci pour ces infos Lavock

    en ce qui concerne le point

    1) et 2) Ok je vais me renseigner sur les BDD, c'est une des mes faiblesse...

    3) Bien sur. Ce que je veux dire c'est que le serveur dois certainement recevoir et distribuer beaucoup d'information des clients et que passer toutes ces informations par un et unique socket ça dois ralentir le serveur Non?

    Si j'ai bien compris le multi threading permet de sous diviser mes taches d'émission et réception via plusieurs sockets non?

    4) Ok mais niveau portabilité???

    5) Ok merci

    et encore merci à toi

    je suis d'ailleurs mo meme plus

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut
    Je tilte juste sur le mot 'confidentiel' qui apparaît deux fois dans ton post : un format binaire n'est pas confidentiel sauf si il est chiffré et/ou son accès est sécurisé.

  6. #6
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    3) Ca y est, j'ai compris ! Oui c'est une bonne solution, mais elle a aussi ces limites. 1 thread par client, tu vas avoir besoin d'une sacré machine, ou de peu de joueurs. C'est pour ça que je préfère le p2p mais bon.
    Il faut que tu trouves l'optimum pour pas surcharger ta pauvre machine ><. Le mieux c'est de faire un thread par requête entrante, jusqu'à que tes atteints un max... Puis tu fais une queu des requêtes. Enfin je sais pas trop, j'ai jamais utilisé les sockets autrement qu'en interne >< !

    4) Le code source QT est portable, mais il nécessite une compilation pour chaque machine cible. Si tu n'as pas toutes les machines, regarde du côté de la cross compilation !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 62
    Par défaut
    Merci pour toutes ces informations très utiles.

    Bon j'ai commencé à utiliser les BDD après qq recherches.

    Pour faire simple j'ai commencé par utiliser la BDD de >QtSql< plus exactement <QSQLITE>.

    pour ce faire j'ai rajouter : QT += sql dans le .pro

    puis ceci dans un .h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <QtSql>
     
    ...
    bool query1(); //appel d'un requete
     
    QSqlDatabase m_Server_DB; //connexion à la base
    QSqlQuery m_query; //requete sur cette connexion
    ...
    et pour finir ceci dans le .c correspondant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    m_Server_DB = QSqlDatabase::addDatabase("QSQLITE");
       m_Server_DB.setHostName("127.0.0.1");
       m_Server_DB.setDatabaseName("armoire1");
       m_Server_DB.setUserName("x");
       m_Server_DB.setPassword("y");
       bool ok = m_Server_DB.open();
     
       if (!ok)
        {
            //qDebug() << PP_Server_DB.lastError();
            QMessageBox::critical(0, QString("Cannot open database"), QString (m_Server_DB.lastError().text()).toAscii(),
                                  QMessageBox::Cancel, QMessageBox::NoButton);
        }
        else
        {
            QMessageBox::information(0, QString("Connected to database"), "Connected to database",
                                     QMessageBox::Cancel, QMessageBox::NoButton); // <- je passe bien ici à l'execusion => ma base m_db est bien ouverte
        }
       m_Server_DB.close();
     
       query1();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    bool ... :: query1()
    {
    bool open = m_Server_DB.open();
        if (!open) {
            QMessageBox::information(0, "Database not opened", m_Server_DB.lastError().text().toAscii(),
                                     QMessageBox::Cancel, QMessageBox::NoButton);
        }
     
         m_query.prepare("INSERT INTO person (id, forename, surname) "
                       "VALUES (:id, :forename, :surname)");
         m_query.bindValue(":id", 1001);
         m_query.bindValue(":forename", "Bart");
         m_query.bindValue(":surname", "Simpson");
        bool ok = m_query.exec(); 
     
        if(ok)
            QMessageBox::information(0, "", "Requéte Réussiee",QMessageBox::Cancel, QMessageBox::NoButton); // <- je passe bien ici à l'execusion => ma base m_db est bien ouverte
     
        else  QMessageBox::information(0, "", "Requéte Refussée");
     
        m_Server_DB.close();
        return true;
    }
    Le problème est que lorsque j'exécute ma requête celle ci est refusée de plus je ne vois pas comment est lier ma BDD à ma requête.

    j'ai essaye d'écrire ceci pour lier ma BDD à m_query :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_query(m_Server_BD);
    ca m'a donner une erreur de compilation.

    que pourrais je faire pour tester rapidement cette base de donnée en lecture et écriture...

    désolé je manque un peu d'expérience dans le domaine des requêtes Sql query...

    Merci d'avance...

Discussions similaires

  1. [Stratégie] Stockage d'informations sous forme de fichier
    Par Jimalexp dans le forum Général Java
    Réponses: 5
    Dernier message: 29/10/2008, 07h18
  2. Base pour stockage d'informations sur des candidatures
    Par ccanu dans le forum Modélisation
    Réponses: 41
    Dernier message: 10/09/2008, 11h39
  3. [VBA-E]Pb Simulation de Monté Carlo avec stockage d'information
    Par geminium dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/04/2007, 15h16
  4. stockages des informations dans les Mfc
    Par khafor dans le forum MFC
    Réponses: 1
    Dernier message: 25/02/2007, 19h16

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