AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TSocketConnection hängt, wenn man Netzwerkkabel entfernt...
Thema durchsuchen
Ansicht
Themen-Optionen

TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

Ein Thema von alzaimar · begonnen am 26. Apr 2006 · letzter Beitrag vom 13. Okt 2016
Antwort Antwort
Seite 1 von 2  1 2      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

  Alt 26. Apr 2006, 21:57
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
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: TSocketConnection hängt, wenn man Netzwerkkabel entfernt

  Alt 28. Apr 2006, 18:32
*push*
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#3

Re: TSocketConnection hängt, wenn man Netzwerkkabel entfernt

  Alt 28. Apr 2006, 19:00
Zitat:
Muss man damit leben, das TCP/IP sich u.U. einfach aufhängt? Oder ist das eine Macke der SocketConnection.
Ich weiß es nicht genau, aber es kann auch sein das sich die Verbindung nicht "aufhängt" sondern das Socket einfach wartet bis die Verbindung wiederhergestellt werden kann...
  Mit Zitat antworten Zitat
Benutzerbild von Dj_Base
Dj_Base

Registriert seit: 10. Aug 2004
Ort: Aachen
231 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TSocketConnection hängt, wenn man Netzwerkkabel entfernt

  Alt 28. Apr 2006, 21:42
Zitat von alzaimar:
Muss man damit leben, das TCP/IP sich u.U. einfach aufhängt? Oder ist das eine Macke der SocketConnection.
Entweder ist es so, dass die Klasse darauf wartet, die Verbindung wieder aufzunehmen, oder sie ist halt etwas schlampig programmiert und kommt mit einem plötzlichen Verbindungsverlust nicht zurecht (was ich allerdings als eher unwarscheinlich einstufe) ...

Gruß,
Dj_Base
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#5

AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

  Alt 12. Okt 2016, 10:42
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.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

  Alt 12. Okt 2016, 11:32
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:

https://stackoverflow.com/questions/...nnection-hangs
Michael Justin
habarisoft.com

Geändert von mjustin (12. Okt 2016 um 12:18 Uhr)
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#7

AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

  Alt 12. Okt 2016, 12:19
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;
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

  Alt 12. Okt 2016, 12:24
ich komme da nur in das CPU Fenster
Projekt Debug-DCUs kompilieren, Bibliothekspfade checken, nochmal versuchen. Der Sourcecode ist dabei

p.s. eventuell muss die MidasLib Unit anstatt MIDAS.DLL eingebunden werden.
Michael Justin
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#9

AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

  Alt 12. Okt 2016, 12:54
Code:
procedure TDispatchConnection.DoDisconnect;
begin
  if not VarIsNull(AppServer) then
    SetAppServer(NULL);
end;
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.

Witzigerweise hat er es einmal korrekt gemacht. War wohl zufall.

Geändert von Koloss (12. Okt 2016 um 13:01 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

AW: TSocketConnection hängt, wenn man Netzwerkkabel entfernt...

  Alt 12. Okt 2016, 18:40
Code:
procedure TDispatchConnection.DoDisconnect;
begin
  if not VarIsNull(AppServer) then
    SetAppServer(NULL);
end;
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.

Witzigerweise hat er es einmal korrekt gemacht. War wohl zufall.
Einfach den Code der in SetAppServer steht lesen, weiterverfolgen, und an sinnvollen Stellen Haltepunkte setzen. So umgeht man die Assemblerwüste.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz