使用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;
}