Indy10 TidTCPClient接收时怎么取得收到了多少字节?
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这里的字节数,有什么属性或者方法可以知道?因为对方发回来的数据长度不是固定的。