QT 与 Linux 之间的TCP通信,为何下载文件速度好慢
Linux下的服务器程序:将filename文件中的内容读取到buf中,然后将buf的内容打包在sendPack(struct FilePackage)数据包中,然后将这个数据包发送出去:
Fd = open(filename, O_RDONLY));
printf("starting download file content\n");
while ((count = read(Fd, (void *)buf, 1024)) > 0)
{
sendPack = pack('D', buf, filename, count, 2, count, "");
if ((write(new_fd, &sendPack, sizeof(struct FilePackage))) == -1)
{
perror("send login message:");
}
}
printf("trans file content over\n");
QT下的程序,将接受服务器端发送过来的(struct FilePackage)数据包,并且取出buf中的内容,写入到file文件中:
file.open(QIODevice::ReadWrite);
client.waitForReadyRead();
client.read((char*)&data,sizeof(struct FilePackage));
while (data.ack == 2)
{
file.write(data.buf);
client.waitForReadyRead();
client.read((char*)&data, sizeof(struct FilePackage));
}
服务器将一个14KB的文件发送,打印出“trans file content over\n”这句话,在3秒左右吧,而客户机接受这个文件居然用了快50S,大家给个意见,是咋回事呢? qT linux 文件传输 缓慢 --------------------编程问答-------------------- 自己先顶一个!!!!! --------------------编程问答-------------------- 没有遇到此类情况啊,不过遇到了问题那么需要重构。我看你服务器使用了linux内核API,我一般服务器和客户端都用Qt开发。服务器可建立Qt console程序。 --------------------编程问答-------------------- client.read((char*)&data, sizeof(struct FilePackage));
TCP传输速度要上去,收发双方都要给力才行。
你这句读的太慢了吧。后面的sizeof能有多大啊?
补充:移动开发 , Qt