Prüfen ob Service gestartet ist und dann diesen kontaktieren

MeeriMomo

Mitglied
Moin

Ich möchte beim Programmstart prüfen ob ein anderes Programm, welches als Service gestartet werden soll gestartet ist.
Das andere Programm soll über RS232 mit einem Steuerungsgerät komunizieren und soll die hauptarbeit verrichten. Das Programm, welches der User selber starten kann soll dan sozusagen nur als Fenster arbeiten, aber auch Eingaben verarbeiten können.

Ich hoffe ich habe es gut erklärt, sonst einfach Fragen.

MeeriMomo
 
Wie soll die Kommunikation zwischen Service und - ich nenn es mal - Client stattfinden? TCP/IP-Socket? Unix-Socket? FIFO? Named-Pipe?
 
Ich hatte mir gedacht über Named Pipes. soll ja beides auf einem PC laufen.
der service soll dan erseinmal über rs232 mit einem Gerät komunizieren, und später über TCP/IP
 
Dann wäre noch zu klären, ob die Ziel-Plattform Windows oder ein Unix-artiges sein soll?

Grundsätzlich läuft es aber so ab:

Service erstellt Named-Pipe und öffnet diese. Bis der Partner connected, blockiert das open(). Kommt eine Connect und anschließend eine Eingabe mittels read() rein, wird an einen Puffer angehängt, bis ein vereinbartes End-Of-Line ankommt. Dann wird der Puffer weiter verarbeitet. Je nach dem, was drin ist, muss dann entsprechend reagiert werden. Hier muss aufgepasst werden, ein Ergebnis kann bei einer FIFO nicht zurück geschrieben werden, da diese nur zum Lesen oder Schreiben geöffnet werden kann.

Der Client man dann entsprechend den entgegen gesetzten Part.

Ich empfehle dennoch, ein Unix-Socket zu verwenden. Das ist nämlich bi-direktional und blockiert nicht.

Sicher ist es möglich, eine FIFO auch nonblocking zu verwenden, dafür musst du dann aber zusätzlichen Aufwand leisten.
 
Zurück