![]() |
TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Hallo zusammen,
in meiner iOS App rufe ich verschiedene RSS-Feeds über die Komponente TidHTTP ab. Das funktioniert auch soweit sehr gut. Wenn ich jetzt die App schlafen lege, also über den Home Knopf beende und die App dann nach ein paar Minuten zum Beispiel wieder neu starte und den Refresh Button für die RSS Feeds anklicke, bekomme ich den Fehler Socket Error 57: Socket is not connected. Dieser Fehler kommt sporadisch. Wie kann ich diesen Fehler beseitigen ? Hier noch der Aufruf :
Delphi-Quellcode:
In URL steht die Adresse, die Aufgerufen werden soll. Ich habe die Komponente TidHTTP nur auf das Formular gelegt und mehr nicht.
try
Xml := IdHTTP.Get(Url); except on E: Exception do begin ShowMessage ('Error: ' + E.Message); Exit; end; end; |
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
so komische Probleme habe ich bei den Indydingern auch immer!
Meine Lösung, ich versuche die Verbindung zu trennen vor einer neuen Abfrage: if IdHTTP1.Connected then IdHTTP1.Disconnect; IdHTTP1.Get('http://........',TempStream); |
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Zur diesen Thema, habe ich gerade das gesehen:
![]() Der fängt das Problem aber auch nicht ab, sondern zeigt nur die message. |
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Zitat:
Zitat:
|
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Zitat:
Kann man das eventuell verwenden um HTTP 1.0 zu erzwingen?
Delphi-Quellcode:
?
FIdHTTPClient.ProtocolVersion := pv1_0;
|
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Also ich habe mal ein kleines Prg gemacht, das die aktuelle IP überwacht und bei Veränderungen der Ip automatisch bei no-ip.com die neue IP setzt da die tollen Vodafonerouter nur dyndns supporten. Da das für LTE gemacht worden ist, kam es vor das mal die Internetverbindung weg war und dann hat es bei meinem Programm auch gerappelt und die Indykomponente hat die Arbeit verweigert, auch wenn wieder ein Netz da ist!
Mit den Trennen der Verbindung habe ich eine stabiles Laufzeitverhalten, was vorher nicht der Fall war! |
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Hallo zusammen,
danke für eure Antworten. Ich habe das ganze jetzt noch ein bisschen anders gelöst. Nach meiner Meinung die sauberste Methode :
Delphi-Quellcode:
Gibt es noch einen besseren Weg ?
IdHTTP := TIdHTTP.Create;
try try Xml := IdHTTP.Get(Url); except on E: Exception do begin ShowMessage ('Error: ' + E.Message); Exit; end; end; finally IdHTTP.Free; end; |
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Zitat:
Du bist nicht mehr auf einem Rechner und .free funktioniert hier ganz anders als man denkt. Schau mal das dein Speicher nicht volläuft bei intensiver Benutzung... |
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Also, ich habe das ganze jetzt mal ausprobiert und mit Instruments kontrolliert.
Delphi-Quellcode:
IdHTTP := TIdHTTP.Create;
try try Xml := IdHTTP.Get(Url); except on E: Exception do begin ShowMessage ('Error: ' + E.Message); Exit; end; end; finally IdHTTP.Free; end;
Delphi-Quellcode:
Diese beiden Versionen nehmen sich nicht viel, was den Speicherverbrauch angeht. Hier wird bei jedem Aufruf immer so um die 700 bis 800 KB auf den gerade verbrauchten Speicherplatz dazu addiert.
IdHTTP := TIdHTTP.Create;
try try Xml := IdHTTP.Get(Url); except on E: Exception do begin ShowMessage ('Error: ' + E.Message); Exit; end; end; finally IdHTTP := nil; end;
Delphi-Quellcode:
Bei dieser Variante läuft das ganze etwas langsamer ab. Die Komponente liegt auf der Form und wird nur einmal beim Start der Anwendung initialisiert. Hier sind es durchschnittlich 500 bis 600 KB beim verbrauchten Speicher dazu addiert.
try
if IdHTTP.Connected then IdHTTP.Disconnect; strXml := IdHTTP.Get(strUrl); except on E: Exception do begin ShowMessage ('Error: ' + E.Message); Exit; end; end; Die Verbrauchsangaben beziehen sich auf die komplette Ausführung des Programms und nicht nur auf die oben genannten Codebeispiele. |
AW: TidHTTP-Komponente bringt Socket Error 57: Socket is not connected
Den Socket Error beim Schlafen legen der App mit der Home-Taste habe ich beseitigt, mit der dritten Variante aus meinem letzten Beitrag. Jetzt merke ich gerade, wenn die Anwendung noch offen ist und das iOS Gerät gesperrt wird, egal ob mit dem Ein-/Aus-Schalter oder durch die Automatische Sperre und ich danach das Gerät wieder entsperre und dann auf den Refresh-Button drücke, bekomme ich den Socket Error 57 wieder.
Was habe ich hier vergessen ? Die Komponente liegt auf der Form und wird nicht zur Laufzeit erstellt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz