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 :

[TCP_Socket] connectToHost() ne fonctionne pas ?


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2021
    Messages : 3
    Par défaut [TCP_Socket] connectToHost() ne fonctionne pas ?
    Bonjour à tous, c'est la première fois de ma vie que je poste sur un forum, j'espère que je le fais correctement.

    Voilà mon problème :

    Je souhaite établir une connexion entre 2 PC (reliés par un Ethernet pour l'instant mais par Wifi plus tard) pour envoyer des données (je m'en occuperai plus tard).

    Je réussis à allumer le serveur sous Delphi d'un côté, mais mon client, et c'est là que je rame, est sous Qt 5.12.0 (je travaille sur Ubuntu) et la commande "return socket->waitForConnected()" ne me renvoi rien.

    J'ai bien conscience que c'est parce que je ne parviens pas à me connecter au serveur (si je met un temps à l'intérieur il me renvoi toujours False), mais je ne comprend pas pourquoi, alors que ça a l'air si simple pour tout le monde sur les différents forum FR/EN que j'ai épluché.

    Je vous met les programmes que j'utilise :


    test1.pro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    QT += network
    QT -= gui
    QT += widgets
    HEADERS += client.h
    SOURCES += main.cpp \
            client.cpp
    client.h
    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
     
     
    #ifndef CLIENT_H
    #define CLIENT_H
     
    #include <QtCore>
    #include <QtNetwork>
     
    class Client : public QObject
    {
        Q_OBJECT
    public:
        explicit Client(QObject *parent = 0);
     
    public slots:
        bool connectToHost(QString host);
     
    private:
        QTcpSocket *socket;
    };
     
     
     
     
     
     
     
    #endif // CLIENT_H

    client.cpp
    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
     
    #include "client.h"
     
    //static inline QByteArray IntToArray(qint32 source);
     
    Client::Client(QObject *parent) : QObject(parent)
    {
        socket = new QTcpSocket(this);
    }
     
    bool Client::connectToHost(QString host)
    {
        socket->connectToHost("192.168.0.2", 10000);
        return socket->waitForConnected();
    }
    main.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    #include <QApplication>
    #include "client.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QApplication::setApplicationDisplayName(Client::tr("Fortune Client"));
        Client client;
    //    client.show();
        return app.exec();
    }

    C'est un code très simple mais pourtant qui ne me permet pas de me connecter à mon serveur.
    Mon serveur est sous window, et je vois, dans le moniteur de ressource que mon port 10000 est bien à l'écoute.

    J'ai cherché du coté des ports sous linux (que je ne maitrîse pas vraiment), j'ai testé de nombreux programmes, mais je pense avoir raté quelque chose, si quelqu'un pouvait m'aiguiller sur une quelconque piste je lui en serais vraiment très reconnaissant.

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Par défaut
    Bonjour.
    Dans le code que tu donnes Client::connectToHost() n'est jamais appelé.
    De plus il faut l'appeler une fois que la boucle d'événement est lancée, peut-être utiliser un QTimer pour ça.
    La doc indique 'In the case where it returns false, you can call error() to determine the cause of the error.', qu'elle erreur est indiquée ?
    Vérifie aussi que tu peut te connecter au serveur depuis le poste Linux, tu peux utiliser telnet pour ça.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2021
    Messages : 3
    Par défaut
    Merci beaucoup, je vais essayer tout ça !

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2021
    Messages : 3
    Par défaut
    Salut ! Problème résolu.

    Je met mon code pour ceux qui auraient un soucis similaire.
    J'ai testé avec Ping et Telnet, et j'arrivais bien à me connecter au serveur de cette façon donc c'était obligatoirement un problème de code.

    En effet je n'appelais pas ma fonction, donc voici comment j'ai résolu le problème :

    client.h :

    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
     
    #ifndef CLIENT_H
    #define CLIENT_H
     
    #include <QtCore>
    #include <QtNetwork>
    #include <QTimer>
     
    class Client : public QObject
    {
        Q_OBJECT
    public:
        explicit Client(QObject *parent = 0);
     
    public slots:
        bool connectToHost();
     
    private:
        QObject *client_obj;
        QTcpSocket *socket;
    };
    client.cpp :

    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
     
    #include "client.h"
    #include <QtWidgets>
    //static inline QByteArray IntToArray(qint32 source);
     
     
    Client::Client(QObject *parent) : QObject(parent)
    {
        socket = new QTcpSocket(this);
        QTimer *timer = new QTimer();
        connect(timer, SIGNAL(timeout()),this, SLOT(connectToHost()));
        timer->setSingleShot(true);
        timer->start(2000);
        qDebug()<<"timer started";
    }
     
    bool Client::connectToHost()
    {
        socket->connectToHost("192.168.0.2", 10000);
        qDebug()<<"connexion...";
        bool a = socket->waitForConnected(30000);
        qDebug()<<a;
        socket->write("0102101205051054540");
    //  return a;
        qDebug()<<"waiting...";
        qDebug() << socket -> error();
     
    }

    Merci beaucoup pour ton aide !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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