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?

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.3k 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 TomNow99
    16 Jul 2020, 18:37

    @hskoglund Thank you. But I don't give one more important information: my host OS is Windows 10. Curl is linux command right?

    C Offline
    C Offline
    Cobra91151
    wrote on 16 Jul 2020, 18:46 last edited by
    #6

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

    @hskoglund Thank you. But I don't give one more important information: my host OS is Windows 10. Curl is linux command right?

    It is available for Windows OS as well. You can check out this link for more details: https://curl.haxx.se/download.html

    1 Reply Last reply
    1
    • T Offline
      T Offline
      TomNow99
      wrote on 17 Jul 2020, 07:13 last edited by
      #7

      @Cobra91151 @mrjj That QTcpSocket is very good. But what if I have situation that I don't want wait?

      So I want only do:

      QTcpSocket connectionSocket;
      connectionSocket.connectToHost("192.168.43.21", port);
      qDebug()<<connectionSocket.state();
      

      I can no wait and always get "connected" when server is up and "notConnected" when server is down? This is only server on my virtualBox.

      J 1 Reply Last reply 17 Jul 2020, 07:15
      0
      • T TomNow99
        17 Jul 2020, 07:13

        @Cobra91151 @mrjj That QTcpSocket is very good. But what if I have situation that I don't want wait?

        So I want only do:

        QTcpSocket connectionSocket;
        connectionSocket.connectToHost("192.168.43.21", port);
        qDebug()<<connectionSocket.state();
        

        I can no wait and always get "connected" when server is up and "notConnected" when server is down? This is only server on my virtualBox.

        J Offline
        J Offline
        jsulm
        Lifetime Qt Champion
        wrote on 17 Jul 2020, 07:15 last edited by
        #8

        @TomNow99 Then use https://doc.qt.io/qt-5/qabstractsocket.html#connected

        1 Reply Last reply
        0
        • T Offline
          T Offline
          TomNow99
          wrote on 17 Jul 2020, 07:18 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);
          
          J 1 Reply Last reply 17 Jul 2020, 07:22
          0
          • T TomNow99
            17 Jul 2020, 07:18

            @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);
            
            J Offline
            J Offline
            jsulm
            Lifetime Qt Champion
            wrote on 17 Jul 2020, 07:22 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 17 Jul 2020, 07:27 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.

              J 1 Reply Last reply 17 Jul 2020, 07:32
              0
              • T TomNow99
                17 Jul 2020, 07:27

                @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.

                J Offline
                J Offline
                jsulm
                Lifetime Qt Champion
                wrote on 17 Jul 2020, 07:32 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 17 Jul 2020, 07:37 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();
                  };
                  
                  J 2 Replies Last reply 17 Jul 2020, 07:43
                  0
                  • T TomNow99
                    17 Jul 2020, 07:37

                    @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();
                    };
                    
                    J Offline
                    J Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on 17 Jul 2020, 07:43 last edited by
                    #14
                    This post is deleted!
                    1 Reply Last reply
                    0
                    • T TomNow99
                      17 Jul 2020, 07:37

                      @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();
                      };
                      
                      J Offline
                      J Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on 17 Jul 2020, 07:45 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 17 Jul 2020, 07:46 last edited by
                        #16

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

                        J 1 Reply Last reply 17 Jul 2020, 07:48
                        0
                        • T TomNow99
                          17 Jul 2020, 07:46

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

                          J Offline
                          J Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on 17 Jul 2020, 07:48 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 17 Jul 2020, 07:53 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 )
                               {
                            
                               }
                            }
                            

                            ?

                            J 1 Reply Last reply 17 Jul 2020, 08:01
                            0
                            • T TomNow99
                              17 Jul 2020, 07:53

                              @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 )
                                 {
                              
                                 }
                              }
                              

                              ?

                              J Offline
                              J Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on 17 Jul 2020, 08:01 last edited by
                              #19

                              @TomNow99 Yes, like this

                              1 Reply Last reply
                              1
                              • T Offline
                                T Offline
                                TomNow99
                                wrote on 17 Jul 2020, 10:43 last edited by
                                #20

                                @jsulm Thank you

                                1 Reply Last reply
                                0

                                15/20

                                17 Jul 2020, 07:45

                                • Login

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