![]() |
TIdTCPServer in einem Dienst nicht erreichbar
Hallo,
auf einem virtuellen Server mit Win Server 2022 habe ich einen Dienst, der soweit auch einwandfrei läuft. Nun soll er aber für verschiedene Clients per TCP erreichbar sein und auf Nachrichten reagieren. Dazu habe ich ihm die Indy TIdTCPServer eingepflanzt. Die wird auch einwandfrei gestartet. Wenn ich dann auf dem Server selbst eine normale VCL-Anwendung starte, kann diese mit dem Dienst kommunizieren, alles bestens. Nun soll das Ganze aber über's Internet funktionieren. Wenn ich dieselbe VCL-Client-Anwendung auf irgendeinem anderen Rechner laufen lasse, ist der Server-Dienst nicht erreichbar - timeout. Nachdem ich ewig und 3 Tage nach Fehlern im Dienst gesucht habe :wall:, habe ich den TIdTCPServer mit allem was dazugehört 1:1 in eine Test-VCL-Anwendung gesteckt, diese auf dem Server gestartet und siehe da, es funktioniert - der Server ist von jedem externen Rechner einwandfrei erreichbar. Die Verbindung steht auch wesentlich schneller als es bei der Dienst-Geschichte dauert, bis der Client ein timeout bekommt. Eine ständig laufende Formular-Anwendung kommt als Lösung aber nicht in Frage, der Server-Admin wäre "not amused". Bei meinen Nachforschungen zu dem Thema bin ich darauf gestoßen, dass der Nutzerkontext vielleicht ein Problem sein könnte. Aber auch nachdem ich im SCM dem Dienst andere Anmeldeinformationen gegeben habe (Administrator-Konto), klappte es nicht. Hat jemand eine Idee, wo das Problem liegen könnte? |
AW: TIdTCPServer in einem Dienst nicht erreichbar
Hast du denn einmal geschaut, ob der Dienst auf dem entsprechenden Port lauscht? (Admin-Kommandozeile:
Code:
)
netstat -abno
Wie sieht es mit der Firewall aus? |
AW: TIdTCPServer in einem Dienst nicht erreichbar
netstat -abno zeigt den Dienst mit an, PID und exe-Name sind die des Dienstes:
Code:
In der Firewall ist der Port 9000 für alle Protokolle geöffnet. Die Firewall hatte ich als Ursache ausgeschlossen, nachdem bei dem Test mit dem TIdTCPServer in einer Formularanwendung die Verbindung zustande kam.
TCP [::]:9000 [::]:0 ABHÖREN 7740
[xxxService.exe] |
AW: TIdTCPServer in einem Dienst nicht erreichbar
Besten Dank an dich Jaenicke, dein Hinweis auf die Firewall hat mich auf die richtige Fährte gebracht! :idea:
Außer der im Hosting des Servers einstellbaren Firewall ist dann ja auch noch dieser schicke Windows Defender da... Den hatte ich intelligenterweise nicht berücksichtigt. Kaum schalte ich den Defender mal komplett ab, schon flutscht die Verbindung durch wie ein geölter Blitz :cheers: Das war ja mal wieder 'ne brilliante Nummer von mir. Frag mich allerdings, warum dieser Defender die Dienst-Verbindung geblockt hat und denselben Client auf demselben Port bei einer Formularanwendung durchgelassen hat :gruebel: |
AW: TIdTCPServer in einem Dienst nicht erreichbar
Geblockt werden Verbindungsversuche, die von Außen angefragt werden. Dein lokaler Test geht nicht durch die Firewall und funktioniert deshalb.
|
AW: TIdTCPServer in einem Dienst nicht erreichbar
Zitat:
Zitat:
|
AW: TIdTCPServer in einem Dienst nicht erreichbar
Zitat:
|
AW: TIdTCPServer in einem Dienst nicht erreichbar
Zitat:
|
AW: TIdTCPServer in einem Dienst nicht erreichbar
Trotzdem ist das im Kontext eines Dienstes. Was genau da intern passiert, sagt natürlich niemand ausführlich, da ansonsten die Erkennungsmethoden und Heuristiken weniger wert wären. Ich habe da jedenfalls insbesondere bei Diensten, die mit anderen Rechnern kommunizieren möchten, schon viel gesehen...
Deshalb schaue ich da im Zweifel lieber dreimal hin, bevor ich langwierig andere Möglichkeiten prüfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 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