![]() |
TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Na ja, irgendwie logisch, das das nicht gut geht.... Aber das Teil hängt einfach, anstatt irgendwann mit einem Error zurück zu kehren. Ich warte ca. 5 Minuten.... Ist das ein Bug oder ist das ein Feature?
Muss man damit leben, das TCP/IP sich u.U. einfach aufhängt? Oder ist das eine Macke der SocketConnection. Hat jemand Erfahrungen damit? Die Geschichte geht so: Wir haben eine nette 3-Tier-Anwendung. Fremdprogrammierer sollen nun auf die Mittelschicht zugreifen. Da z.B. VB keine Socketconnection kennt, habe ich einen DLL-Wrapper geschrieben. Einer der Programmierer verlangt nun (zu Recht), das die DLL absolut bullet-proof ist, und max. 10 Sekunden warten soll (Die normale Response-Zeit liegt bei 200-500ms). Na ja, kann man über Threads lösen, oder gibt es auch einen richtigen Weg? Um die SocketConnection komme ich derzeit nicht herum, obwohl mittelfristig auch eine andere Lösung in Frage käme... Ick hab ich heut sowat von blamiert, als ich die DLL demonstriert habe, und dieser Sack (netter Kerl und echt fähig) dann das Netzwerkkabel rausnahm und sagt: Typischer GAU... Und nu?.... Alter Schwede :oops: |
Re: TSocketConnection hängt, wenn man Netzwerkkabel entfernt
*push*
|
Re: TSocketConnection hängt, wenn man Netzwerkkabel entfernt
Zitat:
|
Re: TSocketConnection hängt, wenn man Netzwerkkabel entfernt
Zitat:
Gruß, Dj_Base |
AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Ich greife das Thema wieder auf, nutze Delphi2010 mit TSocketConnection und habe gemau das selbe Problem! Gibt es dazu eine Lösung?
Das Programm hängt sich bei Connection.Connected := False auf. |
AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Kann man mit einem Netzwerkmonitor die Verbindung noch sehen (netstat, TCPView...)?
Der Default-Timeout des Betriebssystems könnte so hoch sein dass die Fehlermeldung erst nach längerer Zeit erscheint. Ich habe aktuell keinen Link zu einem technischen Artikel, aber man kann ihn entweder systemweit abfragen oder setzen. Ferner würde ich einfach mal den Debugger anwerfen und in Detail nachverfolgen, wo das Programm hängt. Passender Stack Overflow Artikel: ![]() |
AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Das Programm läuft noch aber er hängt eben bei connection := False. Auch wenn ich connection.Free oder Clientdataset.close hängt es. Ich kann da nichts weiter debuggen, ich komme da nur in das CPU Fenster.
Kmischerweise bei einen anderen Programm mit der selben Verbindung dort schiebe ich aber weniger Daten hin und her.
Code:
try
if SocketConnection.Connected then begin SocketConnection.Connected := False; Clientdataset.open; end; except SocketConnection.Connected := False; Clientdataset.close; end; |
AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Zitat:
p.s. eventuell muss die MidasLib Unit anstatt MIDAS.DLL eingebunden werden. |
AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Code:
Später dann im assembler Code(Unit System) schmeißt es ihm hm... das ist leider schon zu tief unten. Darin sehe ich keine lösung.
procedure TDispatchConnection.DoDisconnect;
begin if not VarIsNull(AppServer) then SetAppServer(NULL); end; Witzigerweise hat er es einmal korrekt gemacht. War wohl zufall. |
AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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