64,637
社区成员
发帖
与我相关
我的任务
分享
long Filesize=Downfile.fileLen; //接收到的文件长度
int iSize=0;
char recvBuf[256];
ofstream outfile(GetThreadData.SavePath,ios::binary);
while(Filesize>0)
{
memset(recvBuf,'\0',sizeof(recvBuf));
recv(GetThreadData.m_sock,recvBuf,sizeof(recvBuf),0);
iSize=sizeof(recvBuf);
if(Filesize>=iSize)
{
outfile.write(recvBuf,iSize);
Filesize-=iSize;
}
else
{
outfile.write(recvBuf,Filesize);
Filesize=0;
}
}
outfile.close();
closesocket(GetThreadData.m_sock);
MESSAGEDATA Sendinfo;
ifstream file(FilePath,ios::binary); //以二进制读入的方式打开文件,FilePath是接收到的文件下载路径
if(!file)
{
memset(&Sendinfo,'\0',sizeof(Sendinfo));
Sendinfo.ID=REFUSE_REQUEST;
send(sock,(const char*)&Sendinfo,sizeof(Sendinfo),0); //发送文件上传失败信息
return;
}
else
{
char sendBuf[256]=""; //数据缓存区
WIN32_FIND_DATA Fileinfo;
FindClose(FindFirstFile(FilePath,&Fileinfo));
memset(&Sendinfo,'\0',sizeof(Sendinfo));
Sendinfo.ID=RECEIVE_REQUEST;
Sendinfo.fileLen=Fileinfo.nFileSizeHigh*MAXDWORD+Fileinfo.nFileSizeLow;
send(sock,(const char*)&Sendinfo,sizeof(Sendinfo),0); //发送文件确认信息
Sleep(500);
if(file)
{
//判断结尾
while(!file.eof())
{
file.read(sendBuf,sizeof(sendBuf)); //读文件
send(sock,sendBuf,sizeof(sendBuf),0);
memset(sendBuf,'\0',sizeof(sendBuf));
}
}
file.close();
}