Client-Server Kommunikation: Technologien, Techniken, Tipps gesucht!
-
Also ich möchte 2 Javaanwendungen die miteinander kommunizieren basteln - und zwar sollen die sich in erster Linie Statusinformationen austauschen. Dann aber auch Daten in Form von Objekten und ganze Dateien. Bisher hab ich mit ObjectInputStream und OutputStream herumgespielt und das funktioniert soweit auch gut. Wie krieg ich jetzt das hin, dass ich gleichzeit auch noch Dateien lesen kann? Will aber kein zweites Socket spendieren - es müsste halt dann der InputStream den read-Befehl ausführen.
Dann würd ich noch gern den Client so basteln, dass er den/die Server findet, ohne die IP im vornherein zu wissen. Vielleicht scant der Client dann das Subnet nach den Server ab - macht aber eventuell zuviel Traffic.
Wenn jemand Bespielcode hat, dann immer her damit
Dann noch was anderes, hab gestern mal die ganze RMI und JINI sache durchgelesen - das wäre unter umständen doch auch was? Der Lookup-Service hilft mir dann bei der Server(service)Suche. Leider hab ich nicht einmal das "hello"-example zum laufen gebracht
Jedenfalls danke schonmal für die Hilfe!
-
Hi
Also ich finde su solltest dir mal Web Services anschauen.
Folgende sachen würden dir weiter helfen.Apache Axis, Apache Tomcat.
Du könntest dir uach Apache SAOP anschauen.
Das wichtigste ist das du Web Services verwendest das hilft dir sehr bei der der Arbeit.
Bye
-
dachte eher an richtigen Javaapplikationen, denn ich habe wenig Ahnung von Web-based-apps und Servlets. Toll wärs allerdings schon - am besten per Http-Protokoll übertragen und im Internet verfügbar machen.
Primär reicht aber erstma das die Kommunikation im Netzwerk steht.
Bis jetzt kenn ich nur die klassische Socketkommunikation (wie in C) und ich würde Client und Server jeweils mit Socket und ServerSocket ausstatten, damit jeder eigenständig Sender und Empfänger sein kann. Die Verbindung will ich zustandslos halten, d.h. der Client connected sich jedesmal neu, gleicht die Daten ab, und beendet die Kom. wieder, damit nicht so viele Threads gleichzeitg auf dem Server laufen.
Ach ja was sollen die Programme eigentlich machen? Es sollen interaktive Tests (~MultipleChoice) auf den Clients laufen - zu Beginn jeden Testlaufes, sollen die Fragen/Files komplett zum Client geschickt werden, während des Tests, muss der Client regelmässig die Antworten zum Server schicken.Wenn jemand da schon Konzepte (vor allem wegen der Kommunikation) hat, dann bitte würd ich mich sehr freuen wenn ihr mir helfen könntet!
danke
-
Hi
Also für die Anwendung sind Web Services optimal.
Wenn du die ganze sache mit Sockets machst dann erfindest du ja das Rad jedes mal neu.
Socket Programmierung ist eine gute sache aber auch eine umständliche Angelegenheit. Wie ich schon gesagt habe schau dir mal unbedingt Apache SAOP an in verbindung mit Apache Axis in der Aktuellen Java Magazin ist ein Beitrag dazu das könnte dir helfen.
Web Services sind ja nichts anderes als entfernte Methoden aufrufe, das heisst das du methoden aufrufst als ob diese local beim Client wären, nur mit einem Unterschied das diese auf dem Server ausgeführt werden.
Du kannst da die Fragen vom Server beim einloggen herunterladen.
Als nächtes kannst du die Fragen beim Client anzeigen lassen.
Danach kannst du die Antworten zum Server senden und dieser teilt dir dann mit wie das Ergbnis ist.Das einarbeiten in Web Services oder Apache SAOP ist zwar bischen umständlich aber wenn man einmal drinne ist dann weis man zu schätzen was die vorteile sind.
Der Nachteil der Socket Programmierung ist das du zuständig bist für die Kommunikation zwischen den beiden Partnern und dann kann unter umständen sehr mühsam sein.
Die einfachste Variante Web Services zu nutzen ist XML-RPC dies ist ein Protokoll das das HTTP Protokoll nutzt. In Verbindung mit Servlets ist es sehr einfach und schnell zu realisieren nur leider ist es nicht so mächtig wie SAOP.
Ausserdem hast du bei SAOP die möglichkeit falls dein Client dich mal ändern sollte, das du das dann ohne viel mühe ändern kannst.
SAOP ist ein Protokoll das auch von vielen anderen Programmiersprachen genutzt wird.
Das heisst der Server bleibt bestehen und die Clients müssen eventuell neu erstellt werden für die jeweilige Programmiersprache.Hoffe konnte dir bischen helfen.
BYE
-
Hi,
Danke für Deine Antwort, nur leider glaube ich nicht, dass ich das hinkriege. Hab noch nie mit Webapplikationen, Apache und Co gearbeitet. Das Programm sollte eine einfache Swinganwendung sein. Client und Server. Hab schonmal angefangen zu programmieren, das hat sich aber als sehr mühsam herausgestellt (klassisch Socket). Momentan schick ich einfache Objekte, pack dann aus, und guck was drin ist. Allerdings macht mir da das Errorhandling, die Threadkommunikation und die verschiedenen Stati des Automaten zu schaffen. Auch sollte der Client sich auf nem anderen PC einloggen können, falls einer mal ausfällt ohne das die bereits ausgefüllten Antworten verloren gehen.
Und Server-scan krieg ich auch nicht hin