Indy 10 接收数据丢失问题

kv2002 2008-03-24 07:59:13
对方发给我3组数据包,有时能全收到有时只收到 1~2组包,请教高手给指点下!
接收代码如下:
procedure TForm.IdCollectServerExecute(AContext: TIdContext);
var
Msg :TIdBytes;
Mtu :TMtuBase;
i : integer;
s :String;
begin
AContext.Connection.IOHandler.ReadBytes(Msg,-1);
for I := Low(Msg) to High(Msg) do
s :=s+' '+Format('%-.2x',[Msg[i]]);
WriteLog('收:'+s);
end;
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kv2002 2008-04-23
  • 打赏
  • 举报
回复
揭帖算了,自己搞定!
kv2002 2008-04-10
  • 打赏
  • 举报
回复
indy 10 怎么和indy9 差异这么大!
kv2002 2008-04-10
  • 打赏
  • 举报
回复
RecvCount:=self.FThread_STN.Connection.IOHandler.InputBuffer.Size;
if RecvCount>0 then
begin
with self.FThread_STN.Connection.IOHandler.InputBuffer do
begin
RecvCount:=size;
//读TCP/IP数据到缓冲
ExtractToBytes(RecvBuffer_NTS,Size,false);
end;
end;


发现CPU占用率超高,100%的占用,哪位大侠给指点下
kv2002 2008-03-28
  • 打赏
  • 举报
回复
to getit911 :
我按照你的做法发现包会缺失呀!
getit911 2008-03-25
  • 打赏
  • 举报
回复
RecvCount:=self.FThread_STN.Connection.IOHandler.InputBuffer.Size;
if RecvCount>0 then
begin
with self.FThread_STN.Connection.IOHandler.InputBuffer do
begin
RecvCount:=size;
//读TCP/IP数据到缓冲
ExtractToBytes(RecvBuffer_NTS,Size,false);
end;
end;
spiderman1587 2008-03-25
  • 打赏
  • 举报
回复
如果不是定长的,又想把它全部收完呢?
getit911 2008-03-25
  • 打赏
  • 举报
回复
如果你的包是定长的,可以用ReadBytes来接收。
spiderman1587 2008-03-25
  • 打赏
  • 举报
回复
关注中
kv2002 2008-03-25
  • 打赏
  • 举报
回复
不是丢包了,原来2个包都粘在一块了。
请教下如何解决粘包问题!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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