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. QTcpSocket always connectingState
Forum Updated to NodeBB v4.3 + New Features

QTcpSocket always connectingState

Scheduled Pinned Locked Moved General and Desktop
15 Posts 7 Posters 1.7k Views 2 Watching
  • 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.
  • Christian EhrlicherC Christian Ehrlicher

    And where do you actually connect to an endpoint?

    Christian EhrlicherC Offline
    Christian EhrlicherC Offline
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on last edited by
    #6

    Ok, now there is a connect. But do you listen and accept on the server side?

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    S 1 Reply Last reply
    1
    • Christian EhrlicherC Christian Ehrlicher

      Ok, now there is a connect. But do you listen and accept on the server side?

      S Offline
      S Offline
      Shen sida
      wrote on last edited by
      #7

      @Christian-Ehrlicher Sure, the server has been finished and used with other programs.

      Christian EhrlicherC 1 Reply Last reply
      0
      • S Shen sida

        @Christian-Ehrlicher Sure, the server has been finished and used with other programs.

        Christian EhrlicherC Offline
        Christian EhrlicherC Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by
        #8

        I doubt the server accepts the connection or even get a connection. Make sure there is no firewall and the server really gets a connection request.

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        S 1 Reply Last reply
        0
        • Christian EhrlicherC Christian Ehrlicher

          I doubt the server accepts the connection or even get a connection. Make sure there is no firewall and the server really gets a connection request.

          S Offline
          S Offline
          Shen sida
          wrote on last edited by
          #9

          @Christian-Ehrlicher I turn off all the firewalls and try again, but it'is still in the connecting state.

          JonBJ JoeCFDJ 2 Replies Last reply
          0
          • S Shen sida

            @Christian-Ehrlicher I turn off all the firewalls and try again, but it'is still in the connecting state.

            JonBJ Online
            JonBJ Online
            JonB
            wrote on last edited by
            #10

            @Shen-sida
            Test your server outside of a Qt program, e.g. telnet 192.168.5.181 24680. Does that actually connect?

            SGaistS 1 Reply Last reply
            0
            • JonBJ JonB

              @Shen-sida
              Test your server outside of a Qt program, e.g. telnet 192.168.5.181 24680. Does that actually connect?

              SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #11

              Hi,

              To add to my fellow, you did not connect the errorOccurred signal.

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              1
              • S Shen sida

                @Christian-Ehrlicher I turn off all the firewalls and try again, but it'is still in the connecting state.

                JoeCFDJ Offline
                JoeCFDJ Offline
                JoeCFD
                wrote on last edited by
                #12

                @Shen-sida You can also ping your server to see if it is visible.

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  Shen sida
                  wrote on last edited by
                  #13

                  @JoeCFD @SGaist

                  I did more tests and there are some questions about that:

                  1. when I want to reconnect the socket, there is an error id 19, what is it.
                  // In my tick function
                   if(QAbstractSocket::ConnectedState != socket->state() && socketTimer.elapsed() >= 5000)
                      {
                          qDebug()<<"Try to reconnect socket";
                          socket->disconnectFromHost();
                          socket->connectToHost("192.168.5.233",24680);
                          socketTimer.restart();
                      }
                  
                  // output as follow
                  Try to reconnect socket
                  QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "192.168.5.233"
                  QAbstractSocket::SocketError(19)
                  
                  1. I try to setup the socket in main theard and it work well! But it doesn't work if the socket setup in other thread.

                  2. What's the different between normal object pointer and QPointer<>? I'm still using QPointer<> to declarate this task with tcp socket

                  class CenterManageSystem : public QObject
                  {
                      ...
                  private:
                      QTcpSocket *socket;
                  }
                  
                  class MainWindow : public QMainWindow
                  {
                      Q_OBJECT
                  
                  public:
                      MainWindow(QWidget *parent = nullptr);
                      ~MainWindow();
                  
                  private:
                      Ui::MainWindow *ui;
                      QPointer<CenterManageSystem> pCMS = nullptr;
                  };
                  
                  // move the object to thread
                          pCMS = new CenterManageSystem();
                          CenterManageSystemThread = new QThread();
                          QThread::connect(CenterManageSystemThread, &QThread::started, pCMS , &CenterManageSystem::main, Qt::DirectConnection);
                          pCMS ->moveToThread(CenterManageSystemThread);
                          CenterManageSystemThread->start();
                  
                  jsulmJ 1 Reply Last reply
                  0
                  • S Shen sida

                    @JoeCFD @SGaist

                    I did more tests and there are some questions about that:

                    1. when I want to reconnect the socket, there is an error id 19, what is it.
                    // In my tick function
                     if(QAbstractSocket::ConnectedState != socket->state() && socketTimer.elapsed() >= 5000)
                        {
                            qDebug()<<"Try to reconnect socket";
                            socket->disconnectFromHost();
                            socket->connectToHost("192.168.5.233",24680);
                            socketTimer.restart();
                        }
                    
                    // output as follow
                    Try to reconnect socket
                    QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "192.168.5.233"
                    QAbstractSocket::SocketError(19)
                    
                    1. I try to setup the socket in main theard and it work well! But it doesn't work if the socket setup in other thread.

                    2. What's the different between normal object pointer and QPointer<>? I'm still using QPointer<> to declarate this task with tcp socket

                    class CenterManageSystem : public QObject
                    {
                        ...
                    private:
                        QTcpSocket *socket;
                    }
                    
                    class MainWindow : public QMainWindow
                    {
                        Q_OBJECT
                    
                    public:
                        MainWindow(QWidget *parent = nullptr);
                        ~MainWindow();
                    
                    private:
                        Ui::MainWindow *ui;
                        QPointer<CenterManageSystem> pCMS = nullptr;
                    };
                    
                    // move the object to thread
                            pCMS = new CenterManageSystem();
                            CenterManageSystemThread = new QThread();
                            QThread::connect(CenterManageSystemThread, &QThread::started, pCMS , &CenterManageSystem::main, Qt::DirectConnection);
                            pCMS ->moveToThread(CenterManageSystemThread);
                            CenterManageSystemThread->start();
                    
                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #14

                    @Shen-sida said in QTcpSocket always connectingState:

                    QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "192.168.5.233"

                    This seems to be your problem.

                    "But it doesn't work if the socket setup in other thread" - why do you want to have the socket in another thread? Qt is assynchronous. If you really want to do that then you have to make sure the QTcpSocket instance is created in another thread (when CenterManageSystem::main is called).

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    S 1 Reply Last reply
                    0
                    • jsulmJ jsulm

                      @Shen-sida said in QTcpSocket always connectingState:

                      QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "192.168.5.233"

                      This seems to be your problem.

                      "But it doesn't work if the socket setup in other thread" - why do you want to have the socket in another thread? Qt is assynchronous. If you really want to do that then you have to make sure the QTcpSocket instance is created in another thread (when CenterManageSystem::main is called).

                      S Offline
                      S Offline
                      Shen sida
                      wrote on last edited by
                      #15

                      @jsulm said in QTcpSocket always connectingState:

                      If you really want to do that then you have to make sure the QTcpSocket instance is created in another thread (when CenterManageSystem::main is called).

                      Sure, the instance will be created in &CenterManageSystem::main.
                      Because this socket will process much data so I move it to another thread then the data can be sent by signal to update UI.

                      1 Reply Last reply
                      0
                      • S Shen sida marked this topic as a regular topic on

                      • Login

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