如何获取通过 libcurl 连接传输的总字节数

How to get total bytes count transferred over the connection with libcurl?

本文关键字:连接 libcurl 传输 字节数 何获取 获取      更新时间:2023-10-16

Libcurl 允许获取应用程序级协议(HTTP、FTP 等)发送和接收多少字节的信息。但是,有没有办法获取底层套接字发送和接收的字节数?我涉及所有数据,包括,例如,套接字用于建立SSL连接的字节。因此,我基本上正在寻找一种方法来从libcurl获取与Apache HTTP客户端在HttpConnectionMetrics.getSentBytesCount()HttpConnectionMetrics.getReceivedBytesCount()中提供的相同信息。一个想法是直接从C++访问 Libcurl 使用的套接字;但是,如何获取此套接字总发送/接收字节数?

使用CURLOPT_DEBUGFUNCTION,只需将不同的部分相加,因为它显示了套接字级别的数量。因此,这将为您提供所有使用纯文本的协议的确切数字,那些不使用SSL的协议

但是 - 这不一定会给你SSL级别的东西的计数器,尽管在HTTPS/FTPS等情况下,因为libcurl并不总是暴露这一点。这取决于构建它是为了使用哪个特定的 TLS 后端。OpenSSL后端应该没问题,它也会告诉您传入和传出的TLS数据(使用相同的调试回调)。