Socket Best Practice: Daten bündeln

pengwolf

Mitglied
Hi,

ich hänge mit einem Freund jetzt schon seit längerem an einem Spiel, das zwischen Server und Client viele verschiedene Daten senden soll. Also einmal das Spielfeld, verschiedene Einzelfelder (wo darf der Held in der nächsten Runde hintreten), Lebenspunkte und Schadenspunkte, wenn ein Kampf stattgefunden hat usw... Wir haben uns schon viele verschiedene Gedanken gemacht, wie man die Daten am besten Bündelt.
Wir sind über JSON gestolpert, haben über RMI nachgedacht, uns ist auch schon nahegelegt worden ein eigenes Protokoll zu schreiben, oder ein 3tes Projekt (Server und Client sind einzelne Projekte) und dort neue Klassen schreiben, welche dann bei Server und Client eingebunden werden und dann, nach Lesen aus dem Stream, wieder gecasted werden können.
Letztere Lösung haben wird jetzt erst einmal beibehalten. Allerdings ist dort das Problem, dass wir uns nicht sicher sind ob dies auch die Beste Lösung ist. Wir haben ein Enum, welches immer die Art des Paketes angibt. Daraus können wir dann ablesen, welche Variablen in der eigentlichen Paket-Klasse gesetzt sind.

Mich würde interessieren, wie Ihr diese Probleme angegangen seit und was die Vor- und die Nachteile bei dem ganzen sind.

Vielen Dank schon einmal.
 
T

tröööt

Gast
grundsätzlich : logik auf server ... client zeigt nur an und nimmt input entgegen ...

an sonsten : eigenes protokoll wenns halbwegs einfach genug ist ... ansonsten ist objekt-serialisierung grundsätzlich eher eine schlechte als rechte wahl (schließt RMI ein !) ... aber kann man auch nehmen wenn einem die kommunikation selbst egal ist ...
 

FArt

Top Contributor
Für Datenreplikation (mit oder ohne dedizierten Server) empfehle ich JGroups. Das zu verwendende Protokoll kann jederzeit an die Infrastruktur angepasst werden. Tuningmöglichkeiten bzgl. Verlässlichkeit und optimalte Geschwindigkeit sind inklusive.
 
T

tröööt

Gast
naja ... wenn es reicht string-nachrichten auszutauschen könnte man nach dem motto aufbauen :

COMMAND[/ARGS]

wobei ARGS sich aus

ARGS0[/ARGS1[/...]]

und dann einfach mit PrintStream und BufferedReader hin und her ... das wäre jetzt ein ganz einfaches string-based protocol ...

das ganze kann man noch runterbrechen in dem man gleich direkt byte-werte schickt ... was das refactoring etwas schwieriger macht ... aber im grundsatz sind so die meisten protokolle aufgebaut ...

oder man nimmt sich beispiele an z.b. HTTP oder der gleichen ...
 

TKausL

Top Contributor
Hey,

ich finde das Protokoll von Minecraft gut und nutze dieses (oder ein ähnliches) selbst in einem Programm.
Bei MC besteht jedes "Paket" aus einer Paket-ID (1 Byte) und dann aus gewissen Daten die du KENNEN must.

Wenn der Server also in Paket #1 ein INT und ein LONG mitschickt muss der Client wissen, dass ein INT und ein LONG ankommen, damit er nach auslesen der beiden wieder beim nächsten Paket ankommt. Die Paket-Klassen wird auf Server und Clientseiten 1zu1 genutzt, dort findest du dann eine Methode "read" in der z.B. "readInt" und "readLong" aufgerufen werden, um die Werte zu bekommen, in der "write" dann eben "writeInt" und "writeLong". Dabei musst du selbst drauf achten dass du auch immer nur genau das ausließt was du auch schreibst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Socket Best Practice: Heartbeat Netzwerkprogrammierung 1
W How best to connect to existing RPC ApplicationServer Netzwerkprogrammierung 3
OnDemand Daten per API senden, parallel Netzwerkprogrammierung 9
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
S Daten über TCP/IP senden Netzwerkprogrammierung 3
B Daten an Javaprogramm per URI Aufruf übergeben Netzwerkprogrammierung 7
N websocket - keine Daten mehr nach ca 80 Sekunden Netzwerkprogrammierung 0
C Spezielle Daten aus Website entnehmen Netzwerkprogrammierung 5
H Daten auf einer Webseite eintragen Netzwerkprogrammierung 11
A Socket Daten in Textdokument speichern? Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
J Daten von einem HTML-Textfeld abrufen Netzwerkprogrammierung 3
S Fakturierungsprogramm - Daten aktuell halten (blutiger Anfänger) Netzwerkprogrammierung 1
D Mit Server Daten austauschen Netzwerkprogrammierung 4
K Server liest Daten nicht Netzwerkprogrammierung 6
L HTTP Daten an Server übergeben Netzwerkprogrammierung 2
R Daten von Cloud laden Netzwerkprogrammierung 5
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
X Daten können nicht sofort empfangen werden Netzwerkprogrammierung 1
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
E Verfügbarkeit von Daten in Streams Netzwerkprogrammierung 4
F Daten aus Internetseiten auslesen Netzwerkprogrammierung 56
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
P Socket Daten senden mit ServerSocket? Netzwerkprogrammierung 2
H Daten an Textfeld einer Webseite schicken Netzwerkprogrammierung 2
A versch. Daten im Stream erkennen Netzwerkprogrammierung 2
D daten per post senden Netzwerkprogrammierung 3
M Senden von Daten nicht direkt möglich? Netzwerkprogrammierung 6
J Applet soll Daten auf Server ablegen - einfachster Weg fuer n00bs? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
F UDP Daten kommen nicht an Netzwerkprogrammierung 22
E Socket OutputSream abbruch.Wegen zuviel !empfangener! Daten? Netzwerkprogrammierung 10
C Client zu Client Daten übertragen Netzwerkprogrammierung 13
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Socket XML-Daten und Parameter an Server schicken Netzwerkprogrammierung 3
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
P Server/Client Daten empfangen, wenn Daten gesendet werden Netzwerkprogrammierung 9
K Socket Daten lesen ohne Längenangabe Netzwerkprogrammierung 19
T RMI Effizenteste Übertragung von Daten Netzwerkprogrammierung 6
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
E Daten kommen anders an als gesendert ?! Netzwerkprogrammierung 6
S HttpURLConnection POST splittet Daten in zwei Pakete Netzwerkprogrammierung 9
F POST-Daten sende Netzwerkprogrammierung 3
E HTTPS Debuggen (verschlüsselte Daten anzeigen)? Netzwerkprogrammierung 12
N Per POST -Methode Daten an den Web-Server übertragen. Netzwerkprogrammierung 9
Iron Monkey Große Daten ins Vector füllen Netzwerkprogrammierung 4
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
D Daten, die mit PHP erzeugt werden, mit Java auslesen Netzwerkprogrammierung 8
M Ethernet Daten abfangen Netzwerkprogrammierung 13
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
S Daten per GET-Methode Netzwerkprogrammierung 2
H Server soll Daten schicken, aber wie? Netzwerkprogrammierung 47
M Socket schließt bevor Daten komplett geladen Netzwerkprogrammierung 5
C Flash Daten an Java senden, wie serialisieren? Netzwerkprogrammierung 3
E rxtx serielles senden von Daten Netzwerkprogrammierung 2
D Socket, Daten über BufferedWriter senden Netzwerkprogrammierung 18
G TCP Verbindung überprüfen OHNE daten zu verschicken Netzwerkprogrammierung 11
M Daten übers Netz verschlüsselt übertragen? Wie? Netzwerkprogrammierung 18
J Post-Daten an URL schicken Netzwerkprogrammierung 2
U Image erzeugen aus empfangenen Daten Netzwerkprogrammierung 7
A Wie werden Daten versendet? "Crashcode" Netzwerkprogrammierung 4
D Frage: Buffered Reader --> Wie komm ich an die Daten (Byt Netzwerkprogrammierung 3
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
E Multi-Part Form-Daten mit HttpURLConnection Netzwerkprogrammierung 6
A Datenverlust (zuviele Daten!) über Sockets Netzwerkprogrammierung 4
T Daten über GSM verschicken Netzwerkprogrammierung 4
M Einfachste Möglichkeit aus'm Applet Daten an Server senden Netzwerkprogrammierung 6
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
M Verliere Daten mit WinXP Netzwerkprogrammierung 10
O eingehende Daten speichern Netzwerkprogrammierung 3
D UDP-Daten anzeigen Netzwerkprogrammierung 2
D Daten per Server- Client nur als byte verschicken? Netzwerkprogrammierung 3
A daten an php script per post senden und ausgabe einlesen Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben