读书人

使用indy10下的idtcpclient传输文件有

发布时间: 2012-03-28 15:40:03 作者: rapoo

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

读书人网 >C++ Builder

热点推荐