AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Message an alle Terminal-Server-Sitzungen senden
Thema durchsuchen
Ansicht
Themen-Optionen

Message an alle Terminal-Server-Sitzungen senden

Ein Thema von Papaschlumpf73 · begonnen am 23. Okt 2020 · letzter Beitrag vom 27. Okt 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#1

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 23. Okt 2020, 20:12
Via TCP die Clienten sich mit dem Serve verbinden, ja

Bei UDP ... alle Clienten haben die selbe IP und müssten dann unterschiedliche Ports haben.
(weiß nicht ob alle Clients auf dem selben UDP-Port lauschen können)
Wenn der Server dann alle Ports einzeln ansprechen muß, dann lohnt sich UDP nicht wirklich.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
460 Beiträge
 
Delphi 12 Athens
 
#2

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 23. Okt 2020, 22:12
Vielen Dank für die vielen Vorschläge. Hier eine kurze Zwischennachricht nach ein paar Tests - das hier funktioniert leider alles nur innerhalb einer Session:

Delphi-Quellcode:
WM_BroadCast:=RegisterWindowMessage('WM_BroadCast')
SendMessage(HWND_BROADCAST,...
Postmessage(HWND_BROADCAST,...
BroadcastSystemMessage(BSF_POSTMESSAGE,...
SendNotifyMessageA(HWND_BROADCAST,...
ChangeWindowMessageFilter(...) --für 2 processe, die innerhalb einer Session mit unterschiedlichen Privilegien gestartet wurden
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
460 Beiträge
 
Delphi 12 Athens
 
#3

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 23. Okt 2020, 22:20
Via TCP die Clienten sich mit dem Serve verbinden, ja

Bei UDP ... alle Clienten haben die selbe IP und müssten dann unterschiedliche Ports haben.
(weiß nicht ob alle Clients auf dem selben UDP-Port lauschen können)
Wenn der Server dann alle Ports einzeln ansprechen muß, dann lohnt sich UDP nicht wirklich.
Das werde ich morgen mal ausprobieren.

Die anderen Vorschläge mit TCP kommen leider nicht infrage, da in den einzelnen Sessions keine eigenen IP-Adressen verfügbar sind; alle Sessions nutzen dieselbe IP-Adresse. Wenn jedoch jede Session dieselbe IP-Adresse mit einem anderen Port verwendet, bekommen wir wohl Schwierigkeiten mit den Firewallregeln.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
981 Beiträge
 
Delphi 6 Professional
 
#4

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 24. Okt 2020, 06:21
Hmm..

Deine Clients verbinden sich mit deiner ServerApp per TCP und tauschen Daten aus.
-> Verbindung besteht von mehreren Clients auf einen Server, der die selben IP und Port hat.
-> Klappt auch, wenn die Clients auf dem selben Rechner mit der selben IP laufen..

Das geht, weil jeder Client automatisch einen anderen Port als Quellport verwendet!

Bleibt die Verbindung dann offen und wird nicht geschlossen, dann kann der Server jederzeit etwas an die verbundenen Clients schicken. Hierzu verwendet er die Quellport-Nummer als Zielport (selbe IP bei Terminal-Sessions).

Die Firewall solltest Du eh anpassen:
Wenn Du dort statt IP/Port die Applikation (Server Exe und Client EXE) angibst, dann können bei diesen die Ports wechseln, wie sie wollen. Ist halt dann nur eine Regel in der Firewall je App EXE.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.679 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 24. Okt 2020, 09:44
Um mal eine simple Lösung vorzuschlagen: Der Server legt irgendwo eine Datei an, die die anderen Programme regelmäßig abfragen.

Dabei ist die Datei vom Server mit allow read und deny write geöffnet und wird regelmäßig mit Timestamp neu geschrieben, so dass die Clients eine veraltete Datei erkennen und ignorieren können.

Ist old fashioned, aber funktioniert eigentlich immer.
Thomas Mueller
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
460 Beiträge
 
Delphi 12 Athens
 
#6

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 24. Okt 2020, 14:38
Meine Anwendung bekommt jetzt eine idTCPClient-Kompo und der Mini-HTTP-Server-Dienst bekommt noch eine idTCPServer-Kompo dazu. Sobald meine Anwendung in einer WTS-Session gestartet wird, meldet sie sich beim TCPServer an und lässt die TCP-Verbindung offen. Erhält der HTTP-Server jetzt eine Anforderung sendet der TCP-Server diese über die bestehende TCP-Verbindung an die Client-Session, die die Anforderung dann tatsächlich bearbeiten soll. Ich hoffe nur, die TCP-Verbindungen klappen nicht nach ein paar Stunden zusammen, wenn da mal keine Daten kommen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#7

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 24. Okt 2020, 21:35
Abgesehn davon, dass HTTP auch TCP nutzt.

Wenn die Server-App bereits einen HTTP-Server besitzt, dann könnten auch die Clienten via HTTP drauf zugreifen, wenn du da mit Keep-Alive rumspielst, da die Verbindung ja offen bleiben muß, damit der Server später die Antwort senden kann.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
689 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Message an alle Terminal-Server-Sitzungen senden

  Alt 26. Okt 2020, 09:11
Also man könnte rein theoretisch von einem Session-unabhängigen Service durch die aktuell verbundenen Sessions durchgehen und dort einen Prozess starten, der dann jeweils im Kontext der Session läuft.
  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 10: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