# Daten senden und empfangen mit Applet



## flashdog (9. Jul 2008)

Hallo,
ich habe ein C-Programm welches über die Konsole gesteuert wird und als Ergebnis eine Datei generiert.

Jetzt möchte ich ein Applet programmieren, so dass der Benutzer über das Internet seine Parameter für das C-Programm eingeben kann und wenn das C-Programm die Datei generiert hat dann soll das Applet diese Datei erhalten.

Muss ich dafür ein Java-Server schreiben oder cgi verwenden oder gibt es dazu schon fertige Lösung und wie sieht es mit Dokumentationen aus?

Viele Grüße


----------



## tuxedo (9. Jul 2008)

flashdog hat gesagt.:
			
		

> Hallo,
> ich habe ein C-Programm welches über die Konsole gesteuert wird und als Ergebnis eine Datei generiert.
> 
> Jetzt möchte ich ein Applet programmieren, so dass der Benutzer über das Internet seine Parameter für das C-Programm eingeben kann ...



Dir ist aber schon bewusst dass das Applet nicht auf dem Server, sondern direkt im Browser des Clients läuft? Was mich eben ein wenig irritiert ist das "über das Internet"... Das impliziert irgendwie dass da irgendwas remote von CLient zum Server passiert.



> ...und wenn das C-Programm die Datei generiert hat dann soll das Applet diese Datei erhalten.



Da das Applet beim Client lokal abläuft, wird die Datei auch lokal generiert. Wobei es da bei Applets ja eh "Sicherheitseinschränkungen" gibt die man beachten muss. Du solltest also erstmal in Erfahrung bringen ob dein Vorhaben so überhaupt umsetzbar ist (Sorry, kenn mich mich Applets zu wenig aus.)



> Muss ich dafür ein Java-Server schreiben oder cgi verwenden oder gibt es dazu schon fertige Lösung und wie sieht es mit Dokumentationen aus?
> 
> Viele Grüße



Gesetz dem Fall dass es bei der verwendung eines Applets keine Probleme gibt das C-Programm aufzurufen und die Datei zu erzeugen: Wieso willst du einen Java-Server schreiben? Die Datei wird lokal existieren. Wenn der Zugriff auf's Dateisystem klappt, dann brauchst du keinen Server, keinen CGI-Krempel und Co.

Vielleicht ist es aber geschickter wenn du eine "normale" Java-Desktop-Anwendung statt eines Applets bastelst und diese Anwendung dann via Webstart "anbietest". Aber auch hier würde gelten: Java-Server und/oder CGI und Co. sind überflüssig.

- Alex


----------



## flashdog (9. Jul 2008)

Hi Alex, 
ich habe es mir so vorgestellt, wenn der Benutzer irgendwo in der Welt auf meine Homepage gelangt, dann soll sich ein Applet in seinem Browser laden. Dieses Applet soll dem Benutzer die Möglichkeit geben bestimmte Parameter eingeben zu können  und diese sollen dann an meinen Server zurückgeschickt werden. 

Auf dem Server befindet sich ein C-Programm der die Parameter empfangen und verarbeiten soll. Nach der Verarbeitung erzeugt das C-Programm eine Datei auf dem Server und diese soll dann an den Benutzer/Applet zurückgeschickt werden. Das Applet stellt dann das Ergebnis dar.

Es soll keine lokale Desktop Anwendung werden sondern eine verteilte Anwendung zwischen Client (Applet) und Server.

Leider weiß ich nicht wie man diese verteilte Interaktion zwischen Client/Applet und Server zulaufen bekommt.


----------



## tuxedo (9. Jul 2008)

Das, wonach du suchst, nennt sich entweder:

- Klassische Client-Server-Socketkommunikation
- RMI (Remote Method Invocation)
oder alternativ
- SIMON (siehe meine Signatur)

Wobei ich aber auch hier Webstart bevorzugen würde. Das Resultat des Mechanismus ist (fast) das gleiche: Der "Besucher" kommt auf die Webseite und klickt einen Link. Eine Anwendung "erscheint" mit der der "Besucher" arbeiten kann (allerdings nicht im Browser, sondern wie eine "lokal" gestartete Desktopanwendung). 

Je nach Anwendungsgröße würde ich also gleich zu Webstart übergehen.

Aber um auf deine Frage zurück zu kommen:

>> Muss ich dafür ein Java-Server schreiben ...

Ja, das wäre der beste Weg. Allerdings reicht es hier nicht aus einen Webspace zu haben. Du brauchst einen (v)Root Server auf dem eine Java Virtual Machine läuft.

>>  ... oder cgi verwenden ...

CGI oder PHP ist ein anderer Weg um Daten zwischen Java und einem Webserver auszutauschen. Allerdings hast du dann keine "Java-Logik" auf dem Server laufen, sondern CGI bzw. PHP.

>> oder gibt es dazu schon fertige Lösung ...

Nicht dass ich wüsste. Mir fällt nur "alternativ" eine Applicationserver-Lösung ein, welche den "Dienst" per Webinterface anbietet. Aber auch hier wird es etwas aufwendiger und nicht zu vergessen etwas "teurer" das zu betreiben. 

>> und wie sieht es mit Dokumentationen aus? 

Zu RMI: Such mal hier im Forum oder bei google. Da wirst du nahezu überschüttet mit Infos

Zur SIMON: Schau in meine Signatur

Zur klassichen Socket-Sache: Tja, auch hier: Forum durchsuchen. Socketprogrammierung ist nicht schwer. Google hat auch unzählige, brauchbare Beispiel-Client-Server-Anwendungen parat. Ist nur eben eine Sache der Einstellung/Anforderung ob du alles selbst machen willst, oder ob du ein Framework wie RMI benutzen willst, die dir schon einiges an Arbeit abnimmt. Socketprogrammioerung ist recht "low-level".

- Alex


----------



## flashdog (25. Jul 2008)

Danke, an RMI hatte ich garnicht gedacht, aber es passt. 

Ich haette auch Webstart genommen, aber das C-Programm ist in C geschrieben und somit nicht plattform unabhaengig.


----------



## tuxedo (25. Jul 2008)

Naja, wenn die Kommunikation zwischen Applet und C-Server stattfinden soll, dann ist weder RMI noch SIMON ein egute Wahl. Denn die sprechen ein eigenes Protokoll, das auf C-Seite AFAIK nicht existiert. RMI lässt sich aber "umbiegen" (glaub Corba?!) was in anderen Sprachen auch existiert.

- Alex


----------



## flashdog (27. Jul 2008)

Danke, ich werde mir Cobra mal anschauen.


----------



## tuxedo (27. Jul 2008)

Nein, ich hab mich nicht vertippt. Das Ding heisst wirklich "Corba"

- Alex


----------



## tuxedo (27. Jul 2008)

BTW: Dateien mit RMI (mit oder ohne Corba) schicken ist etwas stumpfsinnig. Dafür wurde RMI nicht gemacht. Dateitransfer würd ich ausschließlich via "stinknormaler" Socketverbindung machen.

- Alex


----------

