Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
739 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 12. Jan 2023, 00:31
Ich nutze hierfür Namend Pipes. Dafür gibt es eine Freeware Komponente, die das Ganze sehr einfach machen. Diese Freeware Komponente habe ich dir mal angehängt. Ich nutze dies schon sehr lange zum Steuern eines Windwosdienstes über ein Trayicon Programm.
Funktioniert super - besten Dank!

Problem:
Es kann bei TPipeServer beim Beenden der Verbindung (Active := false) ein Speicherleck entstehen:
Soweit ich sehe passiert es, wenn ein TPipeClient Disconnect aufruft und TPipeServer "gleichzeitig" mittels Write diesem Client Daten D übermittelt und dann Active := false setzt.
In der Methode TPipeServer.Write wird via AllocPipeWrite für D Speicher reserviert. DisposePipeWrite wird aber für diesen Speicher dann nicht aufgerufen => Leck.
(EurekaLog 7.11.0.1)

Lösung:
Code der Komponente anpassen.

Workaround (Lösung wäre schöner ):
Bei 1-1 Verbindung: TPipeServer schliesst die Verbindung.
Bei 1-n Verbindungen: Flusskontrolle einbauen.
Michael Gasser

Geändert von Michael II (12. Jan 2023 um 00:37 Uhr)
  Mit Zitat antworten Zitat