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