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. [SOLVED]Problem when using second socket.
Forum Updated to NodeBB v4.3 + New Features

[SOLVED]Problem when using second socket.

Scheduled Pinned Locked Moved General and Desktop
smtphtmltcpsocket
12 Posts 2 Posters 4.0k 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.
  • E Offline
    E Offline
    ealione
    wrote on 25 Mar 2015, 08:13 last edited by
    #3

    Yes I do wait for the socket to connect using

    if (!socket->waitForConnected(connectionTimeout))
    {
        return false;
    }
    

    And its hard to post the code as it has turned out to be quite lengthy. Yet my smtp client is a barebones version of this . Any changes that I have made could not be responsible as the way I connect and send the data is the same, and as I said it works fine by itself. As for the http server it contains a worker class that deals with sockets (moves them into a separate thread, connects to the host etc) and a tcpServer that uses the worker class in order to deal with multiple connections.

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mcosta
      wrote on 25 Mar 2015, 08:21 last edited by
      #4

      Is write() called just after that??

      Once your problem is solved don't forget to:

      • Mark the thread as SOLVED using the Topic Tool menu
      • Vote up the answer(s) that helped you to solve the issue

      You can embed images using (http://imgur.com/) or (http://postimage.org/)

      1 Reply Last reply
      0
      • E Offline
        E Offline
        ealione
        wrote on 25 Mar 2015, 08:42 last edited by ealione
        #5

        No after that I wait for the smtp server to respond using

        waitForResponse();
        

        after that I follow with all the procedure that has to take place in order to communicate with an smtp server, like sending the EHLO/HELO message

        socket->write(text.toUtf8() + "\r\n");
        if (! socket->waitForBytesWritten(sendMessageTimeout))
        {
          throw SendMessageTimeoutException();
        }
        
        1 Reply Last reply
        0
        • M Offline
          M Offline
          mcosta
          wrote on 25 Mar 2015, 08:46 last edited by
          #6

          Seems that socket is not connected when you use write().
          I suggest to handle the QAbstractSocket::stateChanged() signal to understand when the state changes after connection

          Once your problem is solved don't forget to:

          • Mark the thread as SOLVED using the Topic Tool menu
          • Vote up the answer(s) that helped you to solve the issue

          You can embed images using (http://imgur.com/) or (http://postimage.org/)

          1 Reply Last reply
          0
          • E Offline
            E Offline
            ealione
            wrote on 25 Mar 2015, 08:53 last edited by
            #7

            I did and it seems that it never changes state. I do not even connect with smtp.google when I use this class form inside my http server, which is weird as it connects just fine otherwise.

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mcosta
              wrote on 25 Mar 2015, 09:07 last edited by
              #8

              Are you sure your socket is not changed is some part in the code??

              Once your problem is solved don't forget to:

              • Mark the thread as SOLVED using the Topic Tool menu
              • Vote up the answer(s) that helped you to solve the issue

              You can embed images using (http://imgur.com/) or (http://postimage.org/)

              1 Reply Last reply
              0
              • E Offline
                E Offline
                ealione
                wrote on 25 Mar 2015, 09:19 last edited by
                #9

                Yup you are correct I should have looked more carefully at my implementation. I had a placed an ! symbol incorrectly. Now as you suggested I can see the states. This is what I get

                Sending verification email.
                QAbstractSocket::HostLookupState
                QAbstractSocket::ConnectingState
                QAbstractSocket::ConnectedState
                Failed to connect to host! 
                

                The last comment comes from

                smtp.connectToHost()
                

                Seems that it returns false, but at least this is a step forward.

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mcosta
                  wrote on 25 Mar 2015, 09:26 last edited by
                  #10

                  Are you sure you don't need to have a SSL socket?? I think at least smtp.gmail.com requires it

                  Once your problem is solved don't forget to:

                  • Mark the thread as SOLVED using the Topic Tool menu
                  • Vote up the answer(s) that helped you to solve the issue

                  You can embed images using (http://imgur.com/) or (http://postimage.org/)

                  1 Reply Last reply
                  0
                  • E Offline
                    E Offline
                    ealione
                    wrote on 25 Mar 2015, 09:31 last edited by
                    #11

                    Yup that was it. Realised it just before I read your comment.
                    I am marking this as solved, thanks for the help mcosta.

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mcosta
                      wrote on 25 Mar 2015, 09:33 last edited by
                      #12

                      You're welcome

                      Once your problem is solved don't forget to:

                      • Mark the thread as SOLVED using the Topic Tool menu
                      • Vote up the answer(s) that helped you to solve the issue

                      You can embed images using (http://imgur.com/) or (http://postimage.org/)

                      1 Reply Last reply
                      0

                      12/12

                      25 Mar 2015, 09:33

                      • Login

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