标题:QT4.1.2文件传输
作者:scerzz
日期:2006-04-22 20:46
内容:
我用tcp传输文件
连接正常了的
tcp_client.write(image_data)
写入了一个打开读取为QByteArray类型 的imagge_data
然后读取方为
server_socket->readAll();
文件不能完整的读取啊
初学者,还请前辈指教啊
#1 [scerzz 04-22 21:58]
看了下其他socket的资料,解决了,
自己给自己发个回复,呵呵
socket对一次写入的数据是有限制的,具体不太清楚,
所以我对要传的东西进行了分块传送。并对文件大小和已经传送接受的大小进行了保存
void ImageShow::ReceiveData()
{
if(filesize==0)
{
server_socket->read((char *)&filesize,sizeof(int));
return;
}
if(filesnowbytesAvailable();
image_data += server_socket->readAll();
if(filesnow==filesize)
{
emit ImageReady();
}
return;
}
QString size;
size.setNum(image_data.size());
QMessageBox::about(this,tr("错误"),size);
}
void ImageShow::SendData(qint64 towrite)
{
if(writed==-1)//开始就初始化了,区别与0,所以为-1
{
filesize = image_data.size();
tcp_client.write((char *)&filesize,sizeof(int));
writed=0;
QString size;
size.setNum(filesize);
QMessageBox::about(this,tr("错误"),size);
return;
}
if(writedfilesize) towrite=filesize-writed;//超过文件大小取剩余部分
writed += (int)tcp_client.write((image_data.data()+writed),towrite);
if(writed>=filesize)
{
QString size;
size.setNum(writed);
QMessageBox::about(this,tr("错误"),size);
}
}
}
顺便问下发布问题,怎么打包让其他机器也能运行呢?
#2 [weilong122 04-23 11:01]
请问楼主
能把你做的软件发给我吗
weilong122@tom.com
#3 [scerzz 04-23 18:27]
自己学习怎么传文件的东西个,连个按钮都没有哦
如果找不到
network库
在工程文件
*.pro中添加
QT+=network
就行了
#4 [scerzz 04-23 18:29]
对了,运行的时候
先运行
cli
再运行ser
选一个图片文件
#5 [weilong122 04-23 21:00]
谢谢楼主啊
竟然要在工程里修改的
我一直都不知道,这几天被弄的郁闷死了
请问为什么要在工程里重新设置呢,为什么生成的pro文件会不完整?