Indy10 TidTCPClient接收时怎么取得收到了多少字节?

chbsnnzl 2014-06-27 03:21:49
var
arySend, aryRev : TBytes;
SUTF8 : UTF8String;
iLen: Cardinal;
i, iRecvLen: Integer;
SL: TStringList;
begin
SetLength(arySend,iLen + 7);
arySend[0] := 31;
arySend[1] := 31;
arySend[2] := 2;
arySend[3] := 0;
arySend[4] := 0;
arySend[5] := 0;
arySend[6] := iLen;


for i:=1 to iLen do
arySend[i+6] := Byte(SUTF8[i]);


sl := TStringList.Create;
Try
if NOT ATCPClient.Connected then
ATCPClient.Connect;
if ATCPClient.Connected then begin
ATCPClient.Socket.Write(arySend); //这里发送的时候我知道多少字节,所以没有问题
ATCPClient.Socket.ReadBytes(aryRev,223,True);//但是我不知道接收的时候,对方会发来多少字节
if aryRev[0] = 0 then begin
sMessage := formatdatetime('yyyy-mm-dd HH:NN:SS',now) +' 服务器未响应!';
StatusBar1.Panels[2].Text := sMessage;
end
else begin
ServerLifeFlag := 'Succeed';
sMessage := formatdatetime('yyyy-mm-dd HH:NN:SS',now) + ' 发送数据成功!';
StatusBar1.Panels[2].Text := sMessage;
end;
end;
finally
FreeAndNil(SL);
ATCPClient.Disconnect; //断开连接
end;
end;

Indy9的时候接收可以用ReadBuffer得到收到多少字节,到了Indy10,我就没方向了,求指导223这里的字节数,有什么属性或者方法可以知道?因为对方发回来的数据长度不是固定的。
...全文
333 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oushengfen 2014-07-01
  • 打赏
  • 举报
回复
这个,我也想知道,顶一下。
chbsnnzl 2014-06-27
  • 打赏
  • 举报
回复
引用 1 楼 xiaoxian251 的回复:
看看ReadBuffer返回值
请看清楚,是INDY10.0.52里我不知道ReadBytes收到多少字节,而不是indy9.
xiaoxian251 2014-06-27
  • 打赏
  • 举报
回复
看看ReadBuffer返回值

1,593

社区成员

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

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