-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuploadtest.cpp
More file actions
60 lines (46 loc) · 1.34 KB
/
uploadtest.cpp
File metadata and controls
60 lines (46 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "uploadtest.h"
#include <sys/time.h>
#include <QTcpSocket>
UploadTest::UploadTest(QObject *parent) : QObject(parent)
{
connect(&socket, &QTcpSocket::readyRead, this, &UploadTest::disconnected);
connect(&socket, &QTcpSocket::bytesWritten, this, &UploadTest::bytesWritten);
}
void UploadTest::sendData( int64_t size )
{
this->size = size;
socket.connectToHost("speedtest.tele2.net", 80);
if(!socket.waitForConnected())
{
emit finished(-1);
return;
}
socket.write(QString("GET /upload.php HTTP/1.0\r\nContent-Length:" + QString::number(size) + "\r\nHost: speedtest.tele2.net\r\n\r\n").toLatin1());
char * data = new char[size];
gettimeofday(&tv1, NULL);
socket.write(data, size);
delete[] data;
}
void UploadTest::disconnected()
{
qDebug() << socket.readAll();
gettimeofday(&tv2, NULL);
int64_t t = tv2.tv_usec - tv1.tv_usec;
t += (int64_t)tv2.tv_sec * 1000000UL - (int64_t)tv1.tv_sec * 1000000UL;
double tt = t / 1000000.0;
double ra = size / tt * 8.0;
emit finished(ra);
int index = 0;
QStringList sl;
sl << "" << "k" << "M" << "G" << "T";
while( ra > 1024 )
{
index++;
ra /= 1024;
}
qDebug() << ra << sl[index] + "bit/s";
}
void UploadTest::bytesWritten(int64_t bytes)
{
qDebug() << "Written" << bytes;
}