# Mit Server Daten austauschen



## Der_Falke_ (1. Mrz 2015)

Halli-Hallo Liebe Community,
ich hätte einmal die Frage wie ich es machen könnte das ich ein Programm entwickle welches sich mit einem anderen Programm, welches über einen Server dauerhaft läuft, bzw. direkt mit dem Server verbindet und dort Dateien speichern und abrufen kann.

Wenn sich das Programm direkt mit dem Server verbinden lässt dann würde ich halt direkt mit dem Programm auf dem Server Dateien schreiben/bearbeiten/auslesen wollen.

Wenn ich auf dem Server ein Programm laufen lassen könnte würde ich über das Programm was Clientseitig benutzt wird gerne Informationen zu dem Serverseitigem Programm senden und dieses würde die ganzen Dateien auf dem Server verwalten, d.h. ich sende z.B. von dem Clientseitigem Programm meinen Namen an das Serverseitige Programm mit der Information das es meinen Namen in einer Datei speichern soll, und das Serverseitige Programm erstellt eine Datei mit meinem Namen drin.

Nun die Frage:
Welche der beiden Varianten ist die bessere?
Und wie kann ich dann mein Clientseitiges Programm mit dem Server oder dem Serverseitigem Programm verbinden und Daten hin und her senden?

Ich würde mich über Codebeispiele sehr freuen 

MfG
Der_Falke_


----------



## Dumdidum (4. Mrz 2015)

Da du bis jetzt noch keine Antwort bekommen hast, bekommst du mal eine von mir 

Ich find es klingt ein bisschen so als ob du dich erst damit auseinander gesetzt hast wie du es umsetzten willst anstelle zu schauen welche Möglichkeiten du überhaupt hast es um zu setzten!?

Für die Kommunikation gibt es eigentlich nur 3 Varianten (eventuell bin ich aber auch nicht auf dem neusten Stand...):
Sockets: eine low-level Kommunikation => Hier werden letztendlich Strings verschickt
RMI (Remote Method Invocation) => Hier definierst du Interfaces die der Client und der Server kennt und kannst dann einfach die Methoden der Interfaces aufrufen (also auch richtige Javaobjekte) übermitteln
Servelet => Eher für Webseiten
kleinere (individuellere) Bibliotheken => Hättest einen größeren Aufwand, da es entsprechend weniger Code beispiele gibt

Zu den 3 varianten findest du genügend bei google 


Letztendlich ist es sicher mit allen 3 Varianten um zu setzen. Ich persönlich würde dir RMI empfehlen, auch wenn die API wirklich schlecht beschrieben ist.

P.s: Hab gerade noch kurz gegoogelt. Also es gibt z.B. inzwischen auch SIMON (Simple Invocation of Methods Over Network) das zumindest von sich behauptet besser als RMI zu sein. https://code.google.com/p/javasimon/


Ist vor allem also eine Frage was wirklich was die minimal/maximal Anforderungen an die Kommunikation sind (nur einfache Namen usw... oder auch komplexe Objekte...). Falls es wirklich nur Namen/Strings sind. Würdest sicher sogar mit Sockets am besten fahren.


---------------- NOCH eine andere Richtung --------------------------
Hast du auch mal darüber Nachgedacht ob eine Datenbank nicht das ist was du haben/benutzen willst? Weil wenn es wirklich nur um das Ablegen von Namen usw geht dann musst du da nicht viel programmieren sondern kannst einfach eben mit einer Datenbank kommunizieren.


----------



## Der_Falke_ (4. Mrz 2015)

Okay, danke für deine Antwort. 
Mit einer MySQL Datenbank habe ich es bereits versucht, jedoch kriege ich, obwohl IP und Port richtig sind keine Verbindung. Deswegen möchte ich es auf diesem Weg versuchen.
Da ich, denke ich mal, nur einfach String verschicken will werde ich mich mit Sockets beschäftigen, ich habe auch vorher schon davon gelesen, doch habe keine richtige und gute evtl. auch deutsche (Für das bessere Verständnis) Erklärung gefunden, deswegen habe ich hier gefragt.

Danke auf alle Fälle


----------



## Dumdidum (4. Mrz 2015)

Ach ich finde schon, dass man da recht viel im Netz findet.. z.B.:

Beispiel: Sockets-Grundlagen
Rheinwerk Computing :: Java ist auch eine Insel – 21.6 Mit dem Socket zum Server

auf den Server selber kommst du aber? Und welche Fehlermeldung hattest du denn bekommen? Vllt sind ja die Ports die du benutzen wolltest gesperrt oder sowas  Also ich denke schon, dass du mit einer Datenbank am "schnellsten" gute Ergebnisse erziehlst. Und letztendlich sind die auch einfach für sowas gedacht. Du hast viel mehr Möglichkeiten und extrem viel höhere Performanz =)


----------



## Der_Falke_ (5. Mrz 2015)

Mit der IP der Datenbank (bzw. des Servers worüber die Datenbank läuft) und den Standardport 3306 (Wenn ich jetzt richtig liege)
Es kam aber immer eine Fehlermeldung dass die Kommunikation fehlgeschlagen ist.


----------

