13,871
社区成员




void __fastcall TUpLoadServer::IdTCPServer1Execute(TIdPeerThread *AThread)
{
AnsiString Cmd,FileName;
TFileStream* readfile;
int FileSize=0;
if(!AThread->Connection->Connected()){return;}
int recvsize=AThread->Connection->RecvBufferSize;
Cmd=AThread->Connection->ReadLn(); //获得命令文件
FileName=TComFun::GetCMDType(Cmd,";");
try {
FileSize=StrToInt(TComFun::GetFileSize(Cmd,";")); //获取文件大小
} catch (...) {
}
if(FileExists(FileName))
{
DeleteFile(FileName);
}
try
{
readfile=new TFileStream(GetFilePath(FileName),fmCreate); //获得文件路径加上服务器文件夹路径
readfile->Seek(0,soFromBeginning);
}
catch(...)
{
}
int ASize=0;
while (readfile->Position<FileSize) //循环接收文件
{
ASize=TComFun::Min(32768,FileSize-readfile->Position);
AThread->Connection->ReadStream(readfile,ASize,false);
}
AThread->Connection->Disconnect();
delete readfile;
}
char* buff=new char[ASize];
AFileStream->ReadBuffer(buff,ASize);
m_client->WriteBuffer(buff,ASize,true);
delete[] buff;
m_client->WriteLn(infostr); //先发送文件大小文件名
m_client->WriteStream(AFileStream,false,true);//注意这个函数的参数。