AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DOMConnection hängt sich auf

Ein Thema von horstmeyer · begonnen am 31. Mär 2023 · letzter Beitrag vom 13. Jun 2023
Antwort Antwort
horstmeyer

Registriert seit: 9. Aug 2021
45 Beiträge
 
#1

DOMConnection hängt sich auf

  Alt 31. Mär 2023, 13:24
Hallo zusammen,

ich suche nach einer Möglichkeit wie man eine DCOMConnection-Verbindung testen kann oder wie man bei DCOMConnection einen timeout setzen kann. Folgende Funktion funktioniert leider nicht:
Delphi-Quellcode:
function Verbindungstest(bMeld:boolean):boolean;
begin
  result:=true;
  try
    Form1.DCOMConnection1.ComputerName:=Form1.edComputername.Text;
    Form1.DCOMConnection1.Connected:=true;
    Form1.DCOMConnection1.Connected:=false;
    if bMeld then
      Showmessage('Verbindung erfolgreich!');
  except
    result:=false;
    if bMeld then
      Showmessage('Verbindung fehlgeschlagen!');
  end;
end;
Wenn der DCOM-Server sich aufgehangen hat, dann bleibt der DCOM-Client an der Stelle "Form1.DCOMConnection1.Connected:=true;" hängen. Wie kann ich das verhindern. Danke für einen hilfreichen Tipp.

Viele Grüße
Horst
  Mit Zitat antworten Zitat
klaus schaaff

Registriert seit: 25. Jul 2009
24 Beiträge
 
#2

AW: DOMConnection hängt sich auf

  Alt 3. Apr 2023, 16:17
Hallo Horst,

das ist eine schwere Frage. Zum Einen Deine function Verbindungstest ist sehr fragwürdig. bMeld gibt schon vor Eintritt in die function vor, was das Ergebnis sein wird, obwohl Connected:= false davor die Verbindung schließen wird.

Gut, der Hänger tritt bei Connected:= true auf. Wenn du da vorher in den Compiler-Optionen -> Use Debug DCUs einstellst, könntest Du genauer Debuggen (tiefer), wo der Hänger entsteht.

Es gibt verschiedenste DCOMConnection-Verbindungen, die dann unterschiedliche Einrichtungen erfordern. Läuft bei Dir der Dienst Windows Management Instrumentation service. Wie sieht das Setting up WMI connections aus. Emba erklärt auch verschiedenes: TCP/IP sockets, use TSocketConnection, To connect to remote application servers using HTTP, use the TWebConnection component. To connect to application servers using SOAP, use TSoapConnection.

Schau mal das:

https://support.quest.com/kb/4295692...-host-machines

Gibst Du eine gültige Anmeldung bei Computername ein? Wie sieht die Registrierung des Servers auf der Client-Maschine aus.

Da sind leider zu viele Fragen offen.

Zumindest solltest Du über Win-Bordmittel WMI Control irgendwas sehen.

Nachtrag: Hier noch einige Links zum Thema:

https://d36j349d8rqm96.cloudfront.ne...COM_manual.pdf

https://www.softwaretoolbox.com/dcom...l-overview.pdf

https://entwickler-ecke.de/topic_Reg...dbe435a56d1e14



Liebe Grüße
Klaus Schaaff

Geändert von klaus schaaff ( 3. Apr 2023 um 17:03 Uhr) Grund: Nachtrag
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#3

AW: DOMConnection hängt sich auf

  Alt 4. Apr 2023, 07:59

ich suche nach einer Möglichkeit wie man eine DCOMConnection-Verbindung testen kann oder wie man bei DCOMConnection einen timeout setzen kann.
Funktioniert der Verbindungsaufbau lokal (wenn der Server läuft)?
Und wenn der lokale Server nicht gestartet ist, dauert es dann auch 'ewig' oder kommt sofort eine Fehlermeldung?
Im Netz findet man Hinweise auf einen 6 Minuten Timeout für DCOM. Ein Workaround wäre, anstatt einer TDCOMConnection eine TSocketConnection (oder eine TWebConnection) zu verwenden. Diese verwenden dann das normale TCP/IP Timeout.
Für einen einfachen Test könnte man mit einer beliebigen Socket-Komponente versuchen, den serverseitigen Port anzusprechen. Dabei kann man ebenfalls das TCP/IP Comnnect-Timeout setzen.
Michael Justin

Geändert von mjustin ( 4. Apr 2023 um 08:05 Uhr)
  Mit Zitat antworten Zitat
horstmeyer

Registriert seit: 9. Aug 2021
45 Beiträge
 
#4

AW: DOMConnection hängt sich auf

  Alt 13. Jun 2023, 16:03
Bei TSocketConnection kann ich keine Eigenschaft "Timeout" finden. Mir geht es ja "nur" darum bevor ich eine Funktion auf dem DCOM-Server aufrufe zu prüfen, ob die Verbindung antwortet und wenn nach einer gewissen Zeit keine Antwort kommt, eine Meldung ausgeben wie beispielsweise "DCOM-Verbindung antwortet nicht". Gibt es nicht vielleicht auch eine Art dcomping? Ich habe die Windowsfunktion rpcping gefunden, aber die gibt auch eine Meldung zurück wenn der Server gerade nicht gestartet ist...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.021 Beiträge
 
Delphi 12 Athens
 
#5

AW: DOMConnection hängt sich auf

  Alt 13. Jun 2023, 16:21
Bei COM und DCOM muss der Server ja gar nicht gestartet sein um eine Verbindung aufzumachen. Der wird im Zweifelsfall automatisch gestartet. Was soll dann da vorab geprüft werden, was nicht auch auf ein Connect hinausläuft?

Du kannst aber immerhin prüfen, ob ein Ping an den Zielrechner erfolgreich ist. Das garantiert zum Einen aber nicht, dass dann auch der DCOM-Server antwortet, und zum Anderen ist ein fehlschlagender Ping auch kein sicheres Indiz, dass der Rechner wirklich nicht erreichbar ist. Manche Rechner antworten einfach nicht auf ein Ping.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:49 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