Код сервера
else if cmd = 'trafic' then begin
DM.qPSI_TraficTest.ParamByName('stock').AsString := sl[3];
DM.qPSI_TraficTest.Open;
while not DM.qPSI_TraficTest.Eof do begin
responce := '*' + DM.qPSI_TraficTest.FieldByName('id').AsString+'*'+
TranslitStr(DecodeEventName(DM.qPSI_TraficTest.FieldByName('A_EVENT').AsInteger))+'*'+
TranslitStr(DM.qPSI_TraficTest.FieldByName('test').AsString)+'*'+
DM.qPSI_TraficTest.FieldByName('A_COUNT').AsString+'*'+
TranslitStr(DM.qPSI_TraficTest.FieldByName('zn').AsString)+'*'+
#$0d#$0a;
OutputReport(responce);
ClientSocket.SendText(responce);
DM.qPSI_TraficTest.Next;
end;
DM.qPSI_TraficTest.Close;
ClientSocket.SendText('EOF'+#$0d#$0a);
ClientSocket.Disconnect(ClientSocket.Handle);
end;
Код клиента
procedure TfRes.GetDetailTraffic(stk: string);
var
cmd,s : string;
cnt : integer;
begin
if not Assigned(CurrServer) then Exit;
cmd := '*'+imei+'*trafic*'+stk+'*';
cnt := 0;
idCl.Host := IP;
idCl.Port := StrToInt(CurrServer.port);
idCl.Disconnect;
while idCl.Connected do ;
try
ad.Show;
idCl.Connect();
if idCl.Connected then begin
idCl.Socket.Write(cmd);
ad.Hide;
pd.Show;
repeat
Sl.Clear;
if not idCl.Connected then break;
s := idCl.Socket.ReadLnWait(3,IndyTextEncoding_UTF8);
if idCl.Socket.ReadLnTimedout then Exit;
Inc(cnt);
pd.Message := 'Получено '+IntToStr(cnt)+' записей';
// pd.Message := s;
if s <> 'EOF' then begin
RE.Subject := s;
RE.Split(SL,0);
if Sl.Count > 1 then begin
AddTr(SL[1],UnTranslitStr(SL[2]),SL[4],UnTranslitStr(SL[3]),UntranslitStr(SL[5]));
end;
end;
until s = 'EOF';
end;
finally
idCl.Disconnect;
while idCl.Connected do ;
ad.Hide;
pd.Hide;
end;
end;
Скриншоты сервера и клиента