• 4295阅读
  • 3回复

1G以上的大文件为何传不了? [复制链接]

上一主题 下一主题
离线rycstar
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-16
我在程序中为2个user建立了TCP连接,然后开始传文件;
发送方是每次写100kb,接收方是readall;
对于小文件,如100M,50M等可以很好的传送与接收,但是到了700M,反应的时间就很慢了,不过传输速度没变;1G的时候就传不了了;
这是为什么。。。
发送方写文件的代码如下:
if (!file->open(QIODevice::ReadOnly)) {
         cerr << "Unable to read the file" << endl;
         delete file;
         file = 0;
         return;
     }

     qint64 x,z;
     qint64 y=100*1024;
     x=file->size();
     qDebug()<<"x="<<x;
     while(x!=0)
     {
         if(x<y)
             z=x;
         else
             z=y;
     client.write(file->read(z));
     x=x-z;
     }
离线foxyz

只看该作者 1楼 发表于: 2009-11-16
最好改成stream的操作
离线rycstar
只看该作者 2楼 发表于: 2009-11-16
你是指在读写文件的时候用stream么?
能给个示范么?
离线foxyz

只看该作者 3楼 发表于: 2009-11-16
你如果是按照二进制操作就用QDataStream.
就是把你的从文件读变为stream读,这样不会占用太大内存。
QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);    // read the data serialized from the file
。。。。。。

如果是Text你就用QTextStream结合QFile读数据,直接用QFile对于大文件比较耗资源。你要么看看帮助。我还真没测试过1G的数据
快速回复
限100 字节
 
上一个 下一个