用socket分割传送文件,文件>100K为什么传送错误,请看代码
Server端分割发送文件,点击Button4发送文件
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TMemoryStream * rms=new TMemoryStream();
int len;
void *buf[2048];
if(D->Execute())
{
rms->LoadFromFile(D->FileName);
while(rms->Position!=rms->Size)
{
len=rms->Read(buf,2048);
ServerSocket1->Socket->Connections[0]->SendBuf(buf,len);
}
}
}
Client端收取组装文件
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
void* buf[2048];
int len;
len=Socket->ReceiveBuf(buf,2048);
FILE *fp;
String file=ExtractFilePath(Application->ExeName);
file=file+"\\temp.doc"; //或者temp.jpg
fp=fopen(file.c_str(),"ab+");
fwrite(buf,1,len,fp);
}
当文件<100k时,发送接收正常,当约大于100k时,如果是.doc 文件,也能发送接收正常,但打开时出现"文件路径错误"类似信息.
如果是.jpg文件,打开时图像显示不全,好像100k以上的内容丢失.