Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Is there a way to check availability local server with timeout in Qt?
Forum Updated to NodeBB v4.3 + New Features

Is there a way to check availability local server with timeout in Qt?

Scheduled Pinned Locked Moved Solved General and Desktop
20 Posts 4 Posters 1.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    TomNow99
    wrote on last edited by TomNow99
    #9

    @jsulm Thank you. But I have other problem: I want check when server is down and I can't connect. Something like:

    QTcpSocket connectionSocket;
    connect(connectionSocket, SIGNAL(cannotConnect()), this, SLOT(cannotConnectSlot()));
    connectionSocket.connectToHost("192.168.43.21", port);
    
    jsulmJ 1 Reply Last reply
    0
    • T TomNow99

      @jsulm Thank you. But I have other problem: I want check when server is down and I can't connect. Something like:

      QTcpSocket connectionSocket;
      connect(connectionSocket, SIGNAL(cannotConnect()), this, SLOT(cannotConnectSlot()));
      connectionSocket.connectToHost("192.168.43.21", port);
      
      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #10

      @TomNow99 You could use a QTimer with a timeout and if you do not get connected() until timeout you can assume that you can't connect.

      1 Reply Last reply
      1
      • T Offline
        T Offline
        TomNow99
        wrote on last edited by TomNow99
        #11

        @jsulm I think about that, but I have many Qtimers :D

        EDIT:

        I want something like:

        Run my server. And in my application I want check connect to this server every 3 seconds. If I can't connect I want write qDebug()<<"noConnection" and end checking.

        jsulmJ 1 Reply Last reply
        0
        • T TomNow99

          @jsulm I think about that, but I have many Qtimers :D

          EDIT:

          I want something like:

          Run my server. And in my application I want check connect to this server every 3 seconds. If I can't connect I want write qDebug()<<"noConnection" and end checking.

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #12

          @TomNow99 I don't see any other solution as even a working connection needs some time to be established, you can't simply do the qDebug just after calling connectToHost()

          1 Reply Last reply
          0
          • T Offline
            T Offline
            TomNow99
            wrote on last edited by TomNow99
            #13

            @jsulm Hmmm. I tried add new Qthread and check connection in this Qthread, but I get error "Cannot create children for a parent that is in a different thread". My code:

            myThreadClass::myThreadClass(QTcpSocket *connSocket): connectionSocket(connSocket)
            {
            
            }
            
            myThreadClass::~myThreadClass()
            {
                connectionSocket->close();
            }
            
            void myThreadClass::run()
            {
                while(1)
                {
                    connectionSocket->connectToHost("192.168.43.23", 139);
                    connectionSocket->waitForConnected(3000);
            
                    if(connectionSocket->state() == QTcpSocket::UnconnectedState)
                    {
                        connectionSocket->close();
                        emit noConnection();
                    }
            
                    connectionSocket->close();
                }
            }
            

            In mainWindow i create myThread and started it. I add QTcpSocket pointer and get this error.

            class myThreadClass: public QThread
            {
                Q_OBJECT
            public:
                myThreadClass(QTcpSocket *connSocket);
                ~myThreadClass();
                void run();
            
            private:
                QTcpSocket *connectionSocket;
            
            signals:
                void noConnection();
            };
            
            jsulmJ 2 Replies Last reply
            0
            • T TomNow99

              @jsulm Hmmm. I tried add new Qthread and check connection in this Qthread, but I get error "Cannot create children for a parent that is in a different thread". My code:

              myThreadClass::myThreadClass(QTcpSocket *connSocket): connectionSocket(connSocket)
              {
              
              }
              
              myThreadClass::~myThreadClass()
              {
                  connectionSocket->close();
              }
              
              void myThreadClass::run()
              {
                  while(1)
                  {
                      connectionSocket->connectToHost("192.168.43.23", 139);
                      connectionSocket->waitForConnected(3000);
              
                      if(connectionSocket->state() == QTcpSocket::UnconnectedState)
                      {
                          connectionSocket->close();
                          emit noConnection();
                      }
              
                      connectionSocket->close();
                  }
              }
              

              In mainWindow i create myThread and started it. I add QTcpSocket pointer and get this error.

              class myThreadClass: public QThread
              {
                  Q_OBJECT
              public:
                  myThreadClass(QTcpSocket *connSocket);
                  ~myThreadClass();
                  void run();
              
              private:
                  QTcpSocket *connectionSocket;
              
              signals:
                  void noConnection();
              };
              
              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #14
              This post is deleted!
              1 Reply Last reply
              0
              • T TomNow99

                @jsulm Hmmm. I tried add new Qthread and check connection in this Qthread, but I get error "Cannot create children for a parent that is in a different thread". My code:

                myThreadClass::myThreadClass(QTcpSocket *connSocket): connectionSocket(connSocket)
                {
                
                }
                
                myThreadClass::~myThreadClass()
                {
                    connectionSocket->close();
                }
                
                void myThreadClass::run()
                {
                    while(1)
                    {
                        connectionSocket->connectToHost("192.168.43.23", 139);
                        connectionSocket->waitForConnected(3000);
                
                        if(connectionSocket->state() == QTcpSocket::UnconnectedState)
                        {
                            connectionSocket->close();
                            emit noConnection();
                        }
                
                        connectionSocket->close();
                    }
                }
                

                In mainWindow i create myThread and started it. I add QTcpSocket pointer and get this error.

                class myThreadClass: public QThread
                {
                    Q_OBJECT
                public:
                    myThreadClass(QTcpSocket *connSocket);
                    ~myThreadClass();
                    void run();
                
                private:
                    QTcpSocket *connectionSocket;
                
                signals:
                    void noConnection();
                };
                
                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #15

                @TomNow99 said in Is there a way to check availability local server with timeout in Qt?:

                while(1)

                You're blocking event loop...
                And the socket must be allocated in the thread where you want to use it.

                1 Reply Last reply
                0
                • T Offline
                  T Offline
                  TomNow99
                  wrote on last edited by
                  #16

                  @jsulm I would like to check still connection that I add while(1)

                  jsulmJ 1 Reply Last reply
                  0
                  • T TomNow99

                    @jsulm I would like to check still connection that I add while(1)

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #17

                    @TomNow99 I'm still not sure why you want this complicated solution using a thread if you can have one using a timer...

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      TomNow99
                      wrote on last edited by TomNow99
                      #18

                      @jsulm Hmmm, but how? Something like:

                      in QTimerSlot ( check evert 3 sec ) I have:

                      connectionSocket->connectToHost("192.168.43.23", 139);
                      timer2.start(1000); // maybe singleShot
                      
                      

                      and how to connect information from slotConnected and other QTimer?

                      slotConnected()
                      {
                          result = true;
                      }
                      
                      slotTimer2()
                      {
                         if(result == false )
                         {
                      
                         }
                      }
                      

                      ?

                      jsulmJ 1 Reply Last reply
                      0
                      • T TomNow99

                        @jsulm Hmmm, but how? Something like:

                        in QTimerSlot ( check evert 3 sec ) I have:

                        connectionSocket->connectToHost("192.168.43.23", 139);
                        timer2.start(1000); // maybe singleShot
                        
                        

                        and how to connect information from slotConnected and other QTimer?

                        slotConnected()
                        {
                            result = true;
                        }
                        
                        slotTimer2()
                        {
                           if(result == false )
                           {
                        
                           }
                        }
                        

                        ?

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #19

                        @TomNow99 Yes, like this

                        1 Reply Last reply
                        1
                        • T Offline
                          T Offline
                          TomNow99
                          wrote on last edited by
                          #20

                          @jsulm Thank you

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved