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 :

Initialisation de QLocalServer


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Par défaut Initialisation de QLocalServer
    Bonjour,

    Après quelques post portant sur la communication interProcessus, j'ai décidé d'utiliser la méthode fourni par l'exemple Qt mais je pense qu'il y a des étapes manquante lors de l'initialisation du Qlocalserver, est-e que quelqu'un pourrai me décrire les étapes d'initialisation d'un Qlocalserver ??

    Je vous met mon code qui actuellement ne fonctionne pas car server->listen ne fonctionne pas :

    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
    BoxServer::BoxServer(void)
    {
    	
    	server = new QLocalServer(); // déclare un nouveau server
    	QString NomServeur = "local";
    	server->serverName() = NomServeur; //Je lui affecte un nom
    	if(server->isListening()) // je vérifie qu'il ne soit pas déjà en lecture
    	{
    		server->close(); // si celui ci est en lecture, j'arrête la lecture
    		server->listen(NomServeur); // et je relance une lecture sur le serveur que je veux
    	}
    	else if(!server->listen(NomServeur)) // s'il n'est pas déjà en lecture, je vérifie qu'il "lit" bien mon serveur et si ce n'est pas le cas il sort de la méthode
             return;
    
    	QObject::connect(server, SIGNAL(newConnection()), server, SLOT(sendData())); // lorsqu'il y a une nouvelle connection le server lui envoi les données
    }
    Je vous remercie d'avance pour votre aide!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Par défaut
    Re bonjour,

    J'ai trouvé un tuto : http://wiki.forum.nokia.com/index.ph...6_QLocalServer

    Qui nous explique mieux le fonctionnement du côté client et du côté serveur.

    Or il me reste encore un petit problème lorsque j'appelle mon constructeur surchargé dans le main pour lancer le serveur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BoxServer::BoxServer("local", this);
    l'erreur produite est la suivante:

    error C2673: 'main'*: les fonctions globales n'ont pas de pointeurs 'this'


    Ce qui est normal mais je sais pas quel objet je doit passer en paramètre !

    Si quelqu'un a déjà géré ce problème je l'écoute.

    Je vous remercie d'avance !

  3. #3
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Tu peux montrer la totalité du code de ton main ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Par défaut
    Bonjour superjaja,

    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
    25
    26
    27
    28
    29
    30
    31
    #include <QtCore/QCoreApplication>
    
    #include "MessagingSystemSerial.h"
    #include "SerialDevice.h"
    #include "BoxServer.h"
    
    #define SVN "$Rev: 643 $"
    
    int main(int argc, char *argv[])
    {
    	QCoreApplication a(argc, argv);
    	
    	
    	BoxServer::BoxServer("local", /* OBJECT */);
    
    	//Revision SVN
    		QString rev(SVN);
    		rev = rev.replace(" $","").replace("$Rev: ","");
    		a.setApplicationVersion("2.5." + rev);
    
    	// mise en route du thread
    	MessagingSystemSerial::getInstance()->InitBOX();
    
    	// recupération des messages
    	MessagingSystemSerial::getInstance()->processMessages();
    
    	
    
    	return a.exec();
    }
    Voici mon main, si vous voulez plus d'infos dites le moi !

    Merci de votre aide !

  5. #5
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Je comprends pas tout car toutes les methode de test classes sont statique ?

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BoxServer::BoxServer("local", /* OBJECT */);
    A mon avis fait plutot ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BoxServer server("local");
    Cela devrait mieux marcher mais je pense qu'il y a d'autre problème dans ton code comme ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    server->serverName() = NomServeur;
    Voir doc Qt serverName() retourne une QString et ne sert pas a affecté un nom au server.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Par défaut
    J'ai suivi ton conseil or cela me donne une autre erreur :

    Unhandled exception at 0x03f92424 in BoxConnector.exe: 0xC00000FD: Stack overflow.

    Et pour cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    server->serverName() = NomServeur;
    la fonction servername() renvoi bien un Qstring, c'est pourquoi dans un premier temps j'avais fait cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!server->listen(server->servername())) 
             return;
    mais rien à faire il ne lit pas et sort directement de la méthode.

    je vais te remettre le constructeur que j'utilise pour déclarer mon server ainsi que mon main dans lequel j'appelle mon constructeur.

    Voici le main :

    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
    25
    26
    27
    28
    29
    30
    #include <QtCore/QCoreApplication>
    
    #include "MessagingSystemSerial.h"
    #include "SerialDevice.h"
    #include "BoxServer.h"
    
    #define SVN "$Rev: 643 $"
    
    int main(int argc, char *argv[])
    {
    	QCoreApplication a(argc, argv);
    	
    	
    	BoxServer server("local");
    
    	//Revision SVN
    		QString rev(SVN);
    		rev = rev.replace(" $","").replace("$Rev: ","");
    		a.setApplicationVersion("2.5." + rev);
    
    	// mise en route du thread
    	MessagingSystemSerial::getInstance()->InitBOX();
    
    	// recupération des messages
    	MessagingSystemSerial::getInstance()->processMessages();
    
    	
    
    	return a.exec();
    }

    Voici le constructeur :
    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
     
    BoxServer::BoxServer(QString servername)
    {
     
    	server = new QLocalServer();
    	if(server->isListening())
    	{
    		server->close();
    		server->listen(servername);
    	}
    	else if(!server->listen(servername))
            return;
     
          QObject::connect(server, SIGNAL(newConnection()), server,    SLOT(sendData()));
    }
    Merci de ton aide et encore désolé je suis débutant en Qt donc je me perds un peu !

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

Discussions similaires

  1. [Servlet] Fichiers d'initialisation
    Par david71 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/09/2003, 13h47
  2. Créer et initialiser un composant TStatusBar :help:
    Par James_ dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/08/2003, 08h52
  3. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12
  4. Initialisation de XMLModule
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 10
    Dernier message: 01/04/2003, 10h08
  5. initialisation Directinput avec delphi
    Par Madmaxx dans le forum DirectX
    Réponses: 1
    Dernier message: 21/02/2003, 17h37

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