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;
...全文
129 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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个包都粘在一块了。
请教下如何解决粘包问题!
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1572

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2008-03-24 07:59
社区公告
暂无公告