Hallo!
Wir haben hier einen Tomcat Server und einen Delphi-Client in einem lokalen Netz. Ich hab die
Indy-Komponenten (TIdHTTP) um mit dem Tomcat zu reden. Die Verbindung ist session-orientiert, sie (die Verbindung) wird vom Tomcat nach 10 Sekunden idle geschlossen.
Leider erhalte ich die berühmt berüchtigten Fehlermeldungen "EIdConnClosedGracefully" und "Socket Error 10053". Sehr selten kommt 10054". Ich weiss im Prinzip, was sie bedeuten (Google sei Dank).
Wenn der EIdConnClosedGracefully-Fehler kommt (der laut
Indy-Doku eine echte
Exception ist), klappt gar nichts mehr. Nur wenn ich dem Tomcat alle 9 Sekunden etwas zu tun gebe, schließt er (bzw. das Java-Modul) die Verbindung nicht und dann haben wir auch kaum Probleme. Ab und an ein 10054 oder ein vereinzelter 10053...
Meine Frage lautet nun: Wie setze ich die vom Server einseitig abgebrochene Verbindung wieder korrekt auf, bzw. wie soll sich der IdHTTP-Client vor einem Get/Post verhalten? Soll ich aufs geradewohl Daten schicken und per Exceptionbehandlung auf die Fehler eingehen? Und wenn ja, wie?
Delphi-Quellcode:
Try
// Hier erstmal prüfen, ob eine Verbindung besteht?...
aData := fHttp.Get(sURL);
Except
On EIdConnClosedGracefully Do
.... <<---
On EIdSocketError Do
Case E.LastError Of
10053 : .... <<---
10054 : .... <<---
end
End;
Ach ja, der TIdHTTPClient ist nicht sonderlich konfiguriert, also unter Host etc. ist nix eingetragen. Sollte ich im Host explizit die Server-
IP eintragen und ein Connect starten?
Leute, was LAN/
TCP/HTTP etc. angebelangt, bin ich eine hohle Nuss, also bitte bitte, helft mir.