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
-
Hi,
Your TCP server variable seems stack based. Does it get out of scope at some point ?
-
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 @koahnignew 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.