QAbstractSocket::UnknownSocketError provides errorString of "UnknownError"



  • Problem

    I am unable to get any further information regarding this error:

    QAbstractSocket::UnknownSocketError
    

    The QT QAbstractSocket::SocketError provides only a basic explanation that some error has occurred

    An unidentified error occurred.

    enum value = -1

    Calling QTcpSocket::errorString() provides this:

    "Unknown error"
    

    There is one question regarding this here on SO but provides no real solution to solving the issue (and what was suggested I have done)

    I have absoltely no idea how to further progress with this error, since each time my client attempts to connect (after calling connectToHost()) I get this error.

    Code:

    //Server

    //...
    if (tcpServer.listen(QHostAddress().AnyIPv4, 5000)) {
        qDebug() << "tcpserver started on port : 5000";
    }
    else{
        qDebug() << "tcpserver failed to start";
    }
    //...
    

    I also went on to explicitly set the server ip to localhost and port 5000, but without success.

    //Client

    //...
    tcp_con = new QTcpSocket(new QObject());
    tcp_con->connectToHost("127.0.0.1", 5000);
    
    switch (tcp_con->error()) {
        //...
        case QAbstractSocket::UnknownSocketError:
        qDebug() << "tcp error UnknownSocketError closed : " << tcp_con->errorString();
        return;
        //...
    }
    

    Client debug output:

    tcp error UnknownSocketError closed :  "Unknown error"
    

    Any advice?

    p.s. I looked for some stacktrace/backtrace option, didn't find anything - if there is, please leave a comment


  • Moderators

    @CybeX

    tcp_con = new QTcpSocket(new QObject());
    

    I do not understand what and why you are using a pointer to QObject there?

    I suggest to start with the use of default values. Therefore, change to:

    tcp_con = new QTcpSocket;
    

  • Lifetime Qt Champion

    Hi,

    Your TCP server variable seems stack based. Does it get out of scope at some point ?


  • Qt Champions 2016

    Don't get this the wrong way, but are you coming from Java? I'm asking because this:

    QHostAddress().AnyIPv4
    

    Doesn't make any sense in C++. What you probably want is to use the scope operator - :: to access one of the enum values. As for the error, please provide the full implementation of your TCP server and mention if you use threading, if so how. Also as mentioned by @koahnig

    new QTcpSocket(new QObject());
    

    This leaks 2 objects one socket and one generic QObject. You need to provide a valid pointer from the object tree to make use of the automatic deletion Qt supplies for child objects.



Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.