把文件分成多块发送到serverSocket,怎么全部无误差接收,

wangyelon 2003-03-29 10:38:56
我自己做的总是出错,只接到很少的数据,代码如下
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{ int daxiao;
char *buff=new char[8192];
daxiao= Socket->ReceiveBuf(buff,8192);
if(daxiao<=0)
{
Socket->SendText("n");//通知发送结束
return;
}
else
{
TFileStream *tmpfile;
for ( ; ; )
{
tmpfile=new TFileStream(filename,//filename是文件名
fmOpenWrite|fmCreate|fmShareExclusive);
tmpfile->Seek(tmpfile->Size,0);
tmpfile->Write(buff,daxiao);
}
delete tmpfile;
}
}
请高手看看,我自己找不出,谢谢!
...全文
114 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyelon 2003-03-30
  • 打赏
  • 举报
回复
还是不对,结帖算了,我快累糊涂了,重新写过
wangyelon 2003-03-30
  • 打赏
  • 举报
回复
哦,不好意思,昨天没有细看,我的代码帖错了
for (;;) {} 要注释掉
是这样的
//for ( ; ; )
//{
tmpfile=new TFileStream(filename,//filename是文件名
fmOpenWrite ¦fmCreate ¦fmShareExclusive);
tmpfile->Seek(tmpfile->Size,0);
tmpfile->Write(buff,daxiao);
// }
qiuafa 2003-03-30
  • 打赏
  • 举报
回复
int remain = 8192;
while (remain)
{
daxiao = Socket->ReceiveBuf(buff, remain); // 因为 daxiao 不一定等于 remain
tmpfile->Write(buff,daxiao);
remain -= daxiao;
}
qiuafa 2003-03-30
  • 打赏
  • 举报
回复
接分&捧场

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧