Important: Please read the Qt Code of Conduct -

QNetworkAccessManager asynchronous API

  • As Qt document says:

    QNetworkAccessManager manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply
    this, SLOT(replyFinished(QNetworkReply*)));


    bq. QNetworkAccessManager has an asynchronous API. When the replyFinished slot above is called, the parameter it takes is the QNetworkReply object containing the downloaded data as well as meta-data (headers, etc.).

    I'm a little curious about the implementation of this asynchronous API.
    Of course, Qt source code will give me the answer, but it's more convenience to get some basic explanation here :)

  • What do you mean exactly? QNAM is built on top of QTcpSocket, which in turn has its async API (readyRead(), disconnected(), error(), etc. signals). So it's something like

    QTcpSocket emits a signal -> some slot we don't know -> (read and process the data) -> emit QNetworkReply / QNetworkAccessManager signals.

    The QTcpSocket async is built on top of an ordinary select(2). I briefly talked about this in this wiki page: .

  • You answer is pretty clear, thanks.

    So, it's based on select(2) sys call.
    I just want to make sure. The link is very informative.

Log in to reply