Seite 1 von 2

Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 26.02.2019 09:30
von Bisonte
Hallo.

Ich bin dabei mir ein IDE Tool zu bauen. Dabei stosse ich auf ein kleines Problem.

Die Enviroment Variablen sind nur beim aufrufen des externen Tools aktuell.
Das Tool soll allerdings im Hintergrund weiterlaufen. Daher wollte ich einen kleinen "Starter"
machen, der die ENV Variablen an das Hauptprogramm übergibt.

Nun das Problem : Der Starter soll die Daten an das Tool senden, und zwar so, dass es auf
allen PB unterstützten OS (PB5.70) läuft.

Der Starter sollte auch klein in der Filegröße sein, weil er ja "schnell" geladen werden soll.
(Auch auf langsamen "Devices" wie in Laptops oder Tablets).

Wie stelle ich das am besten an ?

P.S.: Mit meiner jetzigen "Starter" - Lösung müsste ich nur ein Signal senden, damit das Tool eine Datei einliest...

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 26.02.2019 10:31
von RSBasic
Nur mit nativen PB-Funktionen wird es schwierig. Das einzige wäre, Daten in eine Textdatei zu speichern und das andere Programm schaut stets, ob die Datei geändert wurde und wenn ja, dann liest er die Daten.
Aber diese Vorgehensweise ist eher suboptimal.
Besser ist es, wenn man Daten direkt ohne über Umwege und ohne Workaround an einen Prozess schickt.

Wenn du für Windows, Linux und MacOS (falls notwendig) jeweils die API-Funktion nutzt, dann hast du ja auch eine Crossplatform-Lösung.

Für Windows:
https://www.rsbasic.de/aktualisierung/w ... mserver.pb
https://www.rsbasic.de/aktualisierung/w ... mclient.pb

Für Linux und MacOS gibt es bestimmt sowas auch. Da meldet sich ein Linux-User wie Programie bestimmt.

Ansonsten gibt es auch Shared Memory.

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 26.02.2019 10:31
von mk-soft
Windows Only...

Wenn du das Handle vom Fenster hast, kannst du eine User message an das Fenster senden... #WM_USER + eigene Nummer

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 26.02.2019 10:34
von Derren
Unter Windows mit Window Messages (Voraussetzung dafür ist natürlich ein Fenster, kann aber glaube ich auch unsichtbar sein)

edit:mk-soft war schneller.

Wenn die Codes von RSBasic schon Client und Server heißen: Warum nicht gleich ein einfachen (Web-)Server? Das ist auf jeden Fall Cross-Plattform und beliebig mächtig.

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 26.02.2019 10:44
von mk-soft
P.S. Für MacOS
Link: https://www.purebasic.fr/english/viewto ... 19&t=68047

P.P.S Für Windows. Das hatte ich noch gesucht...
Link: viewtopic.php?f=8&t=13014

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 27.02.2019 08:07
von Bisonte
Die Vorschläge sind schonmal gut :allright:

Allerdings auf Windows beschränkt, und soviel Ahnung von Linux/Mac API hab ich definitiv nicht.

Derrens Idee mit dem NetworkServer/Client hab ich getestet und es sieht gar nicht mal schlecht aus.
Ich dachte dies würde den Starter nur unnötig aufblähen, aber weit gefehlt...

40KB sehe ich immer noch als klein genug an :mrgreen:

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 27.02.2019 10:39
von ¯\_(ツ)_/¯
NetworkServer/Client finde ich auch gut aber du musst unbedingt darauf achten dass dein Programm von der Firewall nicht blockiert wird. Das musst du sicherstellen sonst funktioniert dein Programm nicht.

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 27.02.2019 10:45
von ¯\_(ツ)_/¯
Warum achtest du auf die Dateigröße? In heutiger Zeit spielt das keine Rolle mehr. Wir haben große und schnelle Speicher.

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 27.02.2019 19:29
von Bisonte
Es gibt auch extrem langsame Speicher... und ich kenne davon zuhauf ;)

Und nur weil man mehr Speicher zur Verfügung hätte, muss man ja nicht damit rumasen :mrgreen:

Re: Crossplatform Datenkommunikation zwischen Programmen

Verfasst: 27.02.2019 20:20
von ¯\_(ツ)_/¯
Bisonte hat geschrieben:Und nur weil man mehr Speicher zur Verfügung hätte, muss man ja nicht damit rumasen :mrgreen:
Komisch in anderen Threads waren die meisten Nutzer anderer Meinung. ZB beim Thema Arbeitsspeicher da wollte jemand Prozesse sparen und die meisten Nutzer (auch große Nutzer) meinten es wäre dumm weil ungenutzter RAM dumm wäre und dass man RAM auch nutzen muss wenn man RAM hat. Wieder diese Möchtegern-Profis die immer alles besser wissen müssen....