Archiv verlassen und diese Seite im Standarddesign anzeigen : "Andockmöglichkeit" für externe Programme
Hallo
Ich habe ein Programm das auf einem LinuxServer läuft.
Es erledigt schon sehr viele Tätigkeiten sehr zuverlässig !
Bislang leider nur per Aufruf über die Konsole.
Nun möchte ich das auch externe Programme wie WinGuis, Webinterfaces und andere LinuxServer
diesem Programm Befehle geben können. Sprich es soll irgendwo eine "Andockmöglichkeit" geben
über die sich externe Programme anbinden können.
Am besten wäre es wenn es sich um eine Schnittstelle handeln würde die über einen Syntax
verfügt welcher von sämtlichen Sprachen und Plattformen benutzt werden kann.
Ich dachte schon an etwa ähnliches wie das HTTP...
Hat jemand Erfahrungen oder eine Ahnung ?
Freue mich auf Hilfe und Ratschläge.
Gruß Uhu
Jan Krüger
23.10.2006, 19:03
Naja, die externen Programme müssen schon recht genau an das Programm angepasst sein, damit die Oberfläche Zugriff auf die Funktionalität bieten kann — es sei denn, du willst ein Webinterface zur Steuerung. Dann kommst du natürlich um HTTP nicht herum; die einfachste Lösung dürfte dann sein, eine Webanwendung zu schreiben, die wiederum die Kommunikation mit der Hauptanwendung über ein Protokoll deiner Wahl (bzw. deinem Design entsprechend) erledigt.
Hi
Ich habe ja bereits eine Funktionssammlung die genau beschreibt welche Funktion wie heißt und welche Argumente sie erwartet.
Dies gilt momentan ja nur für den Aufruf über die Konsole des LinuxServers.
Aber ich könnte ja quasi eine Art Daemon nutzen welcher authorisiert durch passwörter o.ä. den Funktionsnamen und speziell formatiert die Argumente annimmt.
Das meine ich mit ähnlich dem HTTP.
Hier zu mal ein Beispiel:
ip=127.0.01;
port=1234;
while(true) {
verbindungen=nehme_verbindungen_an(ip,port);
while(verbindungen) {
signal=fetch_signal_remote(verbindungen);
string=signal_to_string(signal);
exec=exec_command(string);
send_output_remote(exec);
}
}
Wobei der der signalstream (nach meiner Vorstellung) in etwa so aussehen könnte:
local# Welcome at DockingServer on 127.0.0.1
remote# passwort / keycode
local# Code OK / Code nicht OK
remote# funktion_123 \n agr1 \n arg2 \n arg3 \n \n
local# Output von funktion123
remote# exit
In diesem Beispiel dachte ich mir z.B. das der DockingServer einen Input solange fetcht
bis er eine Leere umgebrochene Zeile enthält.
So kann der jeweilige Input dann z.B. per :
$123=explode($input, "\n");
in ein Array gelesen werden wobei $123['0'] die funktion ist und jeder weiterer satz ein Argument.
Ich hoffe es ist verständlich was ich vor habe.
Hat dazu jemand eine Idee ?
Gruß Uhu
Jan Krüger
24.10.2006, 15:10
Ich verstehe nicht genau, was dein Problem dabei ist. Das Design des Protokolls schaut doch in Ordnung aus.
Falls du dich erst noch in der Serverprogrammierung zurechtfinden musst, empfehle ich dir, einen einfachen Server anzugucken, z.B. einen minimalistischen HTTP-1.0-Server.
Eine Alternative wäre, inetd zu benutzen. Der kümmert sich um die Netzwerkkommunikation. Dann hast du zwar für jede Verbindung einen einzelnen Prozess, aber die Befehle der Verbindung kannst du dann direkt aus STDIN fischen und die Antworten auf STDOUT ausgeben.
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.