首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

使用indy10下的idtcpclient传输文件有关问题

2012-03-28 
使用indy10下的idtcpclient传输文件问题我用idtcpclient和idtcpserver传输文件时发生问题客户端用的是IdTC

使用indy10下的idtcpclient传输文件问题
我用idtcpclient和idtcpserver传输文件时发生问题

客户端用的是
IdTCPClient1->IOHandler->Write(picfile,picfile->Size,true);//picfile是TFileStream*类型

服务器用的是
void __fastcall TServerForm::IdTCPServer1Execute(TIdContext *AContext)
{
TMemoryStream* buffer = new TMemoryStream();
AContext->Connection->IOHandler->ReadStream(buffer,picsize,true);//但是读取不到内容
.....
}

[解决办法]
用这个函数试试
void __fastcall TServerForm::idFTPServerStoreFile(
TIdFTPServerThread *ASender, const AnsiString AFileName,
bool AAppend, TStream *&VStream)
[解决办法]
IdTCPClient1->IOHandler->Write(picfile,picfile->Size,true);//picfile是TFileStream*类型 

这个请先确定picfile的position为0,建议使用
IdTCPClient1->IOHandler->Write(picfile,0,true);//picfile是TFileStream*类型 


[解决办法]
void __fastcall TForm2::IdTCPServer1Execute(TIdContext *AContext) 

// DeleteFile("ser.jpg"); 
TMemoryStream * buffer = new TMemoryStream(); 
AContext->Connection->IOHandler->ReadStream(buffer,{filesize 由于写入的时候带有一个长度,所以得先读取长度}-1,false); 
 buffer->Position = 0; 
 TFileStream* f = new TFileStream("ser.jpg",Classes::fmCreate); 
 f->CopyFrom(buffer,buffer->Size); 
 f->Free(); 
 {delete f;//f->Free()已经销毁f,两句只能用其一。}
delete buffer; 

热点排行