heyho.
für meinen client (siehe projekt ->signatur) nutze ich die indykomponente idHtttp.Post
die funktioniert an sich auch gut und sendet die daten via post an meinen server.
nur nach einer gewissen zeit (so ca. 100-300 aufrufe) verweigert sie immer den dienst.
Delphi-Quellcode:
procedure tform1.senddata;
var
data: TIdMultiPartFormDataStream;
pass : MD5Digest;
reply :string;
begin
zeile[1] := daten[cbline1.itemindex];
zeile[2] := daten[cbline2.itemindex];
zeile[3] := daten[cbline3.itemindex];
zeile[4] := daten[cbline4.itemindex];
zeile[5] := daten[cbline5.itemindex];
if edit_user.text = '' then
begin
reply:='Keine Userdaten eingetragen';
end
else
begin
IdHTTP1.Request.UserAgent:='siginfo client ' + version + '(user: ' + edit_user.text + ')';
data := TIdMultiPartFormDataStream.Create;
//passwort auslesen und in md5
pass := md5.MD5String(edit_pass.text);
try
{ POST daten erstellen }
data.AddFormField('user', edit_user.text);
data.AddFormField('pass', md5.MD5Print(pass));
data.AddFormField('zeile1', zeile[1]);
data.AddFormField('zeile2', zeile[2]);
data.AddFormField('zeile3', zeile[3]);
data.AddFormField('zeile4', zeile[4]);
data.AddFormField('zeile5', zeile[5]);
data.AddFormField('lastupdate', datetostr(date) +', '+ timetostr(gettime));
data.AddFormField('version', version);
data.Position:=0;
try
reply := IdHTTP1.Post(server, data);
except
reply := 'Server Timeout';
end;
finally
data.free;
end;
end;
Log.Lines.add (timetostr(gettime) + ': ' + reply);
statusbar1.Panels[1].Text:=reply;
statusbar1.Panels[0].Text:=timetostr(gettime);
end;
so sieht meine procedure zum daten senden erstmal aus.
wenn der server nicht erreichbar ist, schreibt er ja "server timeout" in den antwortstring rein.
aber trotz verbindung zum server (
localhost zur zeit noch) bringt er mir immer "timeout".
erst wenn ich das programm neu starte, ist dieser fehler vorbei.
wie kann ich das beheben und vorallem - woran liegt das?