![]() |
Indy: Verbindung trotz Disconnect nicht geschlossen?
Hi,
ich entwickle momentan ein Programm, welches die Indy-Komponenten benutzt um Daten durchs Internet zu schicken. Die Wahl fiel nur auf die Indys, da sie SSL unterstützen und Quelloffen sind, ansonsten bin ich von ihnen leider nicht sehr begeistert, da ich irgendwie nicht damit klar komme... Nun zum eigentlichen Problem: Bei mir läuft das Programm problemlos und beim Kunden sind irgendwann keine Internetverbindungen mehr möglich, das Programm meldet zuerst Connection refused, danach Timeout. Es scheint sich also der Router aufzuhängen. Meine Vermutung ist nun, dass die Sockets nicht richtig zugemacht werden (das Programm macht für jede Datei einen auf, und davon sollen ca 500 versendet werden). In "netstat -an" werden sie definitiv noch als offen angezeigt, solange das Programm läuft. Hier der entsprechende Sourcecode am Server:
Delphi-Quellcode:
Und am Client:
procedure TServerForm.OnExecute(AThread: TIdThread);
begin // Weggelassen: Code um festzustellen, was für ein Request es ist HandleFileUpload(AThread); AThread.Connection.Disconnect; end;
Delphi-Quellcode:
Davor befinden sich einige ReadLn, WriteLn und WriteStream beziehungsweise ReadStream-Anweisungen auf beiden Seiten, sonst nichts. Der Socket wird folgendermaßen erzeugt:
FSocket.Disconnect;
FreeAndNil(FSocket);
Delphi-Quellcode:
In netstat sieht das ganze dann so aus:
function CreateSocket:TIdTCPClient;
begin result:=TIdTCPClient.Create(nil); with result do begin IOHandler:=TIdSSLIOHandlerSocket.Create(result); with TIdSSLIOHandlerSocket(IOHandler) do begin SSLOptions.Method:=sslvTLSv1; SSLOptions.Mode:=sslmClient; OnStatus:=SSLStatus; end; Host:=FHost; Port:=FPort; end; end;
Code:
Woran kann das liegen / Was mache ich falsch?
TCP 127.0.0.1:3001 127.0.0.1:1540 WARTEND
TCP 127.0.0.1:3001 127.0.0.1:1541 WARTEND TCP 127.0.0.1:3001 127.0.0.1:1542 WARTEND TCP 127.0.0.1:3001 127.0.0.1:1543 WARTEND Vielen Dank im Voraus und viele Grüße, sECuRE |
Re: Indy: Verbindung trotz Disconnect nicht geschlossen?
Hi,
um das Thema nochmal zu pushen und mehr Informationen zu geben: Es sieht so aus, als sei das ein Problem, das mit der Verwendung von SSL zusammenhängt. Ich kenn' mich leider zu wenig aus mit dem Indy-Sourcecode, aber beim Debugging konnte ich keinen Aufruf der Close-Methode des Binding-Objekts finden. Danke & cu |
Re: Indy: Verbindung trotz Disconnect nicht geschlossen?
Hast du denn auch beide DLLs (libssl32.dll oder so und noch ne andere) bei dir eingebunden in den Ordner? :gruebel:
|
Re: Indy: Verbindung trotz Disconnect nicht geschlossen?
Hi,
ja, natürlich, sonst würde ja SSL gar nicht funktionieren. Die Übertragung an sich funktioniert, nur das Schließen der Verbindung nicht. Da ich nun aber auf die Synapse-Units gestoßen bin, denke ich, dass ich die Indys komplett aus dem Projekt werfe. Synapse kann ebenfalls SSL und funktioniert bisher sehr unkompliziert und zuverlässig. Danke & cu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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-2025 by Thomas Breitkreuz