当前位置:编程学习 > wap >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,