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. No reception of NewConnection signal
Forum Update on Monday, May 27th 2025

No reception of NewConnection signal

Scheduled Pinned Locked Moved General and Desktop
13 Posts 2 Posters 7.6k 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
    tony
    wrote on last edited by
    #4

    Well, I've tried your code in my PC ... and it works :)

    Just a strange thing, but it's not dependent on your code. Qt Creator does not show printf messages in "Application Output". But if you launch your program in a console, you'll see the message (I put a printf in NewConnection slot).

    1 Reply Last reply
    0
    • T Offline
      T Offline
      tony
      wrote on last edited by
      #5

      Btw ... use qDebug() function to show message in Application Output ...

      1 Reply Last reply
      0
      • C Offline
        C Offline
        cyte13
        wrote on last edited by
        #6

        all my printf worked fine but NewConnection...
        As an example, at the start of listenning : printf("Local Game Engine Server listenning on port %d...\n", port); => works fine in the console....

        1 Reply Last reply
        0
        • T Offline
          T Offline
          tony
          wrote on last edited by
          #7

          Well, your server starts fine (as netstat shows...)

          I just make a "telnet 127.0.0.1 8500" and a NEW CONNECTION!!! (my message) appears.

          Firewall? Do you connect to 127.0.0.1 and port 8500? I cannot see any other problem ...

          1 Reply Last reply
          0
          • C Offline
            C Offline
            cyte13
            wrote on last edited by
            #8

            I desactived the firewall but nothing changed.
            What is strang is that the client correctly onnects to the server and intercepts the connected() signal.
            Moreover, I need to put the WaitForNewConnection() to be able to intercept newConnection() signal....

            1 Reply Last reply
            0
            • C Offline
              C Offline
              cyte13
              wrote on last edited by
              #9

              telnet succeced in connecting to the server but still nothing in new connection!!!!

              1 Reply Last reply
              0
              • T Offline
                T Offline
                tony
                wrote on last edited by
                #10

                well, the only thing left is that I can post my code and you'll check for any diff ...

                @
                #ifndef GAMESERVER_H
                #define GAMESERVER_H

                #include <QtCore>
                #include <QtNetwork>

                class CGameEngineServer;

                class CGameEngine : public QThread
                {
                Q_OBJECT

                quint16 m_engineport;
                

                public:
                /** Constructeur par défaut */
                CGameEngine(QObject *parent = 0) : QThread(parent), MyEngineServer(0) { }

                /** Destructeur */
                ~CGameEngine() { }
                
                /**
                    StartProcess    :    Lance le serveur de jeu local et gère la partie
                    engineport        :    Port d'écoute du serveur local de jeu
                    placeavailable    :    Nombre maximum de joueur à la table
                    RETURN            :    GAMEENGINE_CORRECT ou GAMEENGINE_ERREUR
                **/
                void StartProcess(quint16 engineport, int placeavailable);
                
                void run();
                

                private:
                CGameEngineServer* MyEngineServer;
                };

                class CGameEngineServer : public QTcpServer
                {
                Q_OBJECT

                public:
                CGameEngineServer(QObject *parent = 0) : QTcpServer(parent) { }

                bool Listen(quint16 port);
                void Close();
                

                protected:
                //void incomingConnection(int socketDescriptor);

                private:
                QVector<QTcpSocket*> m_VectorClient;
                quint16 tailleMessage;

                signals:
                void MessageToRead(QString);

                public slots:
                void NewConnection() { printf("NEW CONNECTION!!!\n"); }
                void ReadMessage() { }
                };

                #endif // GAMESERVER_H
                @

                @
                #include "gameserver.h"

                void CGameEngine::StartProcess(quint16 engineport, int placeavailable)
                {
                m_engineport = engineport;
                // m_MaxPlayer = placeavailable;

                start();
                

                }

                void CGameEngine::run()
                {
                /* Create the server object /
                MyEngineServer = new CGameEngineServer();
                /
                Start listenning on port in arg /
                if (!MyEngineServer->Listen(m_engineport)) exit();
                /
                Connect signals between MyEngineServer and this to specify processes at a new incoming message */
                QObject::connect(MyEngineServer, SIGNAL(MessageToRead(QString)), this, SLOT(MessageToRead(QString)));
                exec();
                }

                bool CGameEngineServer::Listen(quint16 port)
                {
                bool result = listen(QHostAddress::LocalHost, port);
                if (result)
                {
                printf("Local Game Engine Server listenning on port %d...\n", port);
                /* make connection for a new connction */
                QObject::connect(this, SIGNAL(newConnection()), this, SLOT(NewConnection()));
                }
                else
                {
                printf("Unable for Local Game Engine Server to listen on port %d...\n", port);
                }
                return result;
                }
                @

                @
                #include <QtCore/QCoreApplication>

                #include "gameserver.h"

                int main(int argc, char *argv[])
                {
                QCoreApplication a(argc, argv);
                CGameEngine MyGameEngine;
                MyGameEngine.StartProcess(8500, 2);

                return a.exec&#40;&#41;;
                

                }
                @

                I hope that this will help you solve your problem ...

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  cyte13
                  wrote on last edited by
                  #11

                  not better.....
                  The only difference between your code and mine is that the CGameEngine and CGameEngineServer are available via a library (ifdef GAMENETWORK_LIB

                  define GAMENETWORK_EXPORT Q_DECL_EXPORT

                  #else

                  define GAMENETWORK_EXPORT Q_DECL_IMPORT

                  #endif)

                  ==> May cause the issue?

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    tony
                    wrote on last edited by
                    #12

                    I don't think so ... well, you can try :)

                    1 Reply Last reply
                    0
                    • C Offline
                      C Offline
                      cyte13
                      wrote on last edited by
                      #13

                      I progress...
                      When removing all classes access by library and directly insert .h and .cpp files into my app folder, it workd fine!!!!

                      Thanks a lot.

                      But... I would like to understand why it does not work when using StartProcess from the CGameEngine got from a library...!!!!

                      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