#include "networkspeed.h" NetworkSpeed::NetworkSpeed() : _lastBytes(0), _lastMs(0), _file(nullptr) { QStringList list = QStringList() << "/sys/class/net/boot0/statistics/rx_bytes" << "/sys/class/net/eth0/statistics/rx_bytes" << "/sys/class/net/br0/statistics/rx_bytes"; for (QString s : list) { if (!QFile::exists(s)) continue; _file = new QFile(s); } if (_file != nullptr) { _timer.start(); } } NetworkSpeed::~NetworkSpeed() { if (_file != nullptr) { _file->deleteLater(); } } qint64 NetworkSpeed::read() { char buffer[500]; qint64 ret, now; if (_file == nullptr || !_file->open(QIODevice::ReadOnly)) { return -1; } now = _timer.elapsed(); _file->readLine(buffer, sizeof(buffer)); _file->close(); QString line(buffer); const qint64 counter = (qint64)line.toLongLong(); if (_lastBytes == 0) { ret = 0; } else { ret = counter - _lastBytes; } if (_lastMs < now) { ret = (ret * 1000) / (now - _lastMs); } _lastMs = now; _lastBytes = counter; return ret; } const QList& NetworkSpeed::getBars() const { static QList list = QList() << ((qint64)1024 * 1024 * 12); return list; } qint64 NetworkSpeed::getMaximum() { return ((qint64)1024 * 1024 * 120); }