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
    #5

    @Cobra91151 Thank you for answer. Tommorow I check it! :)

    1 Reply Last reply
    0
    • T TomNow99

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

      Cobra91151C Offline
      Cobra91151C Offline
      Cobra91151
      wrote on 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 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.

        jsulmJ 1 Reply Last reply
        0
        • T TomNow99

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

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on 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 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