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. Client-server application
Forum Updated to NodeBB v4.3 + New Features

Client-server application

Scheduled Pinned Locked Moved General and Desktop
24 Posts 7 Posters 12.6k Views 1 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.
  • Z Offline
    Z Offline
    za83
    wrote on last edited by
    #10

    Are there any complete simple examples for server?

    1 Reply Last reply
    0
    • Q Offline
      Q Offline
      qxoz
      wrote on last edited by
      #11

      In links above you can find what you need. Read docs and do little bit effort.

      1 Reply Last reply
      0
      • Z Offline
        Z Offline
        za83
        wrote on last edited by
        #12

        I did enough efforts but I have never worked with SSL. Example would help me.
        http://qt-project.org/forums/viewthread/21401 this is server example. But I don't know how can I make it working.

        This attempt does not work.
        [CODE]
        #include <QApplication>
        #include <QtNetwork/QSslSocket>
        #include <QDebug>

        class Server : public QObject
        {
        public:
        void f()
        {
        m_socket = new QSslSocket(this);
        m_socket->setSocketDescriptor(handle);
        m_socket->setProtocol(QSsl::SslV3);

            QByteArray key;
            QByteArray cert;
        
            QFile file_key("../ssl/server.key");
            if(file_key.open(QIODevice::ReadOnly))
            {
                key = file_key.readAll();
                file_key.close();
            }
            else
            {
                qDebug() << file_key.errorString();
            }
        
            QFile file_cert("../ssl/server.crt");
            if(file_cert.open(QIODevice::ReadOnly))
            {
                cert = file_cert.readAll();
                file_cert.close();
            }
            else
            {
                qDebug() << file_cert.errorString();
            }
        
            //qDebug() << key + "\n" + cert;
        
        
            QSslKey ssl_key(key, QSsl::Rsa);
        
            QSslCertificate ssl_cert(cert);
        
            m_socket->setPrivateKey(ssl_key);
            m_socket->setLocalCertificate(ssl_cert);
            m_socket->startServerEncryption();
        }
        

        private:
        QSslSocket m_socket;
        };

        int main( int argc, char **argv )
        {
        Server server;
        server.f();
        }
        [/CODE]

        1 Reply Last reply
        0
        • A Offline
          A Offline
          andre
          wrote on last edited by
          #13

          Of course not! You are not even creating an application object, you are not starting an event loop, etc. Did you actually look at the examples that were referenced?

          1 Reply Last reply
          0
          • Z Offline
            Z Offline
            za83
            wrote on last edited by
            #14

            I worked with QT long ago. But I thought this code must be though compiling. Isn't it?

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #15

              In addition to what Andre said: Are sure that "../ssl/server.crt" is the right path ?

              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
              0
              • Z Offline
                Z Offline
                za83
                wrote on last edited by
                #16

                I created an application object but code is still not compiling as I expected.
                main.cpp:10: error: no match for 'operator=' in '((Server*)this)->Server::m_socket = (operator new(8u), (<statement>, ((QSslSocket*)<anonymous>)))'
                [code]
                #include <QApplication>
                #include <QtNetwork/QSslSocket>
                #include <QDebug>

                class Server : public QObject
                {
                public:
                void f()
                {
                m_socket = new QSslSocket(this);
                m_socket->setSocketDescriptor(handle);
                m_socket->setProtocol(QSsl::SslV3);

                    QByteArray key;
                    QByteArray cert;
                
                    QFile file_key("../ssl/server.key");
                    if(file_key.open(QIODevice::ReadOnly))
                    {
                        key = file_key.readAll();
                        file_key.close();
                    }
                    else
                    {
                        qDebug() << file_key.errorString();
                    }
                
                    QFile file_cert("../ssl/server.crt");
                    if(file_cert.open(QIODevice::ReadOnly))
                    {
                        cert = file_cert.readAll();
                        file_cert.close();
                    }
                    else
                    {
                        qDebug() << file_cert.errorString();
                    }
                
                    //qDebug() << key + "\n" + cert;
                
                
                    QSslKey ssl_key(key, QSsl::Rsa);
                
                    QSslCertificate ssl_cert(cert);
                
                    m_socket->setPrivateKey(ssl_key);
                    m_socket->setLocalCertificate(ssl_cert);
                    m_socket->startServerEncryption();
                }
                

                private:
                QSslSocket m_socket;
                };

                int main( int argc, char **argv )
                {
                QApplication app(argc, argv);

                if (!QSslSocket::supportsSsl()) {
                QMessageBox::information(0, "Secure Socket Server",
                             "This system does not support OpenSSL.");
                    return -1;
                }
                
                Server server;
                server.f();
                
                return app.exec(&#41;;
                

                }
                [/code]

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #17

                  Have a look at the declaration of m_socket

                  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
                  0
                  • Z Offline
                    Z Offline
                    za83
                    wrote on last edited by
                    #18

                    Thanks.
                    error: variable 'QSslKey ssl_key' has initializer but incomplete type (Solved #include <QtNetwork/QSslKey>)

                    1 Reply Last reply
                    0
                    • Z Offline
                      Z Offline
                      za83
                      wrote on last edited by
                      #19

                      How to include libs?
                      I wrote
                      [code]
                      LIBS += -L/C:/OpenSSL-Win32/lib ssleay32.lib libeay32.lib
                      [/code]
                      error: ssleay32.lib: No such file or directory

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #20

                        That's not all for m_socket.

                        Please, search the documentation a bit "Other libraries":http://qt-project.org/doc/qt-4.8/qmake-project-files.html#declaring-other-libraries

                        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
                        0
                        • Z Offline
                          Z Offline
                          za83
                          wrote on last edited by
                          #21

                          Thanks but unfortunately it does not help me.

                          main.cpp:13: error: undefined reference to _imp___ZN10QSslSocketC1EP7QObject' main.cpp:15: error: undefined reference to _imp___ZN10QSslSocket11setProtocolEN4QSsl11SslProtocolE'
                          main.cpp:45: error: undefined reference to _imp___ZN7QSslKeyC1ERK10QByteArrayN4QSsl12KeyAlgorithmENS3_14EncodingFormatENS3_7KeyTypeES2_' main.cpp:47: error: undefined reference to _imp___ZN15QSslCertificateC1ERK10QByteArrayN4QSsl14EncodingFormatE'
                          main.cpp:49: error: undefined reference to _imp___ZN10QSslSocket13setPrivateKeyERK7QSslKey' main.cpp:50: error: undefined reference to _imp___ZN10QSslSocket19setLocalCertificateERK15QSslCertificate'
                          main.cpp:51: error: undefined reference to _imp___ZN10QSslSocket21startServerEncryptionEv' main.cpp:51: error: undefined reference to _imp___ZN15QSslCertificateD1Ev'
                          main.cpp:51: error: undefined reference to _imp___ZN7QSslKeyD1Ev' main.cpp:45: error: undefined reference to _imp___ZN7QSslKeyD1Ev'
                          main.cpp:51: error: undefined reference to _imp___ZN15QSslCertificateD1Ev' main.cpp:51: error: undefined reference to _imp___ZN7QSslKeyD1Ev'

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #22

                            Sure it helps, that's a new error. Did you build Qt with ssl support ?

                            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
                            0
                            • Z Offline
                              Z Offline
                              za83
                              wrote on last edited by
                              #23

                              I did not build Qt. I just installed it on Windows.
                              How can I do it? Can I use that build for commercial applications under LGPL?

                              1 Reply Last reply
                              0
                              • T Offline
                                T Offline
                                tobias.hunger
                                wrote on last edited by
                                #24

                                You are ship your commercial applications under LGPL license? Those are of course compatible with LGPL Qt.

                                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