Welche Art von Sockets für ein Spiel?

Status
Nicht offen für weitere Antworten.

Progman

Mitglied
Hallo

Ich spiele mit dem Gedanken ein Kartenspiel zu programmieren. Ich frag mich nun, wie ich die Verbindungen, die von den Clients kommen, verwalten soll. Ich habe mir 2 Möglichkeiten ausgedacht.
  1. Die accept-Methode vom ServerSocket packe ich in ein Thread, sowie alle Verbindungen zu den Clients. Damit kann ich dann im 'Hauptteil' mein Spiel verwalten und reagiere auf Ereignisse in den Threads (ist dies möglich? wenn ja, wie kann man sowas realisieren?)
  2. Ich habe was über Channels gelesen, nur irgendwie ist mir das System noch nicht so ganz vertraut. Über die select-Methode eines ServerChannels krieg ich irgendwie, das sich was an den Sockets getan hat. Somit brauch ich keine eigene Threads, da select mit einem Timeout schon fast wie ein Thread agiert und ich das Spiel weiterhin im Hauptteil verwalten kann.
Und wie sieht das für den Client aus. Soll ich da so wie beim Server auch die Verbindung in ein Thread packen oder soll ich da auch die Channels benutzen.

Wenn ich euer Meinung nach Channels benutzen soll, könnt ihr mir Informationen über Channels geben. Denn das System hab ich noch nicht so ganz verstanden, weil da mehrere Sachen wie Selectoren und Iteratoren ineinandergreifen.

mfg Progman
 

DTR

Bekanntes Mitglied
Hallo,

ich würde die Kommunkation über zwei Threads, einen Server und einen Client Thread laufen lassen. Ein Spieler muss dann als Server auftreten, und die anderen als Clients. Das Spiel läuft dann eigendlich beim Server und die Client kümmern ishc um die jeweiligen Ausgaben.
 

Progman

Mitglied
Da hast du was falsch verstanden:

Wie realisiere ich die Verwaltungen der Clients beim Server? Die Server- und Clientprogramme lasse ich schon getrennt verwalten, das ist nicht das problem. Was das problem ist, wie ich die Verbindungen verwalte.

Beim Server:
Er muss ja jede Verbindung speichern und auf Ereignisse reagieren. Das problem ist, dass ich nicht einfach spieler1_socket.read(); (sinngemäß) machen kann, denn dann würde er den Programmfluss blocken, bis Spieler 1 etwas zum server schickt. Deswegen habe ich mir überlegt das ich diesen Methodenaufruf in einen Thread packe und ich im Hauptteil des Serverprogramms sowas wie spieler1.hasSaySomething() realisiere, das Abfragt, ob der Client etwas gesendet hat und ich es auslesen kann. Somit habe ich für jeden Spieler bzw. jede Verbindung ein Thread laufen, der auf den Socket horcht und die ganze zeit darauf wartet, bis ein Spieler etwas sendet.

Jetzt gibt es aber auch diese neue Technik mit den Channels. Da wird in einem Selector (was immer der auch macht und was immer das auch ist) die Verbindungen gespeichert und das Programm liest dann in diesen Selector aus, wann sich etwas an den Sockets getan hat. Diese Channels übernehmen dann für mich die Aufgabe der Threads und ich kann ohne Threads im Hauptprogramm mein Spiel weiter verwalten, nach dem Motto "Hat sich was an den Verbindungen getan? nein? nagut, dann weiter im Spielverlauf...".

Die gleiche Entscheidung muss ich bei den Client wählen, aber da brauch ich zum Glück nur eine Verbindung verwalten, nä(h)mlich die zum Server.

Und nun die Frage, welche Technik ich nehmen soll? Soll ich mit Threads arbeiten und jede Verbindung in ein Thread packen oder soll ich diese Channeltechnik benutzen? Wenn ihr meint, ich soll die Channeltechnik mit ServerSocketChannel, SocketChannel, Selector und Iterator benutzten, könnt ihr mir Informationen über diese Technik geben?
 

DTR

Bekanntes Mitglied
Im prinzip ist es egal, ob du zu jedem Client einen eigenen Socket öffnest oder einem SocketChanel pro Client. Meiner ansicht nach musst du beides irgendwie beim Server verwalten. Am ende kommst du um Threads nicht drumrum, da sich die Client sonst gegenseitig aufhalten. Den für die Chanels benötigte SelectorProvider musst du auch noch schreiben. Mit Chanels kann man es wohl sauberer Schreiben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Welche IP/Addresse brauche ich ? Netzwerkprogrammierung 9
B Socket Websockets (HTML5) - Welche Lib am weitesten? Netzwerkprogrammierung 4
S Welche Netzwerktechnik ist die bessere? Netzwerkprogrammierung 10
M Multiplayerspiel programmieren... welche Klassen sind geeignet? Netzwerkprogrammierung 10
L Welche Technologie verwenden Netzwerkprogrammierung 8
A Welche Technik sollte ich einsetzen Netzwerkprogrammierung 9
S welche Rechner sind im lokalen Netz online Netzwerkprogrammierung 11
M Verteilte Anwendung - welche Technik? Netzwerkprogrammierung 31
M welche ist die beste icq api? Netzwerkprogrammierung 7
deetee Welche Schnittstelle um Traffic auszulesen? Netzwerkprogrammierung 2
Jannn Socket Sockets an ein anderes Gerät weiterreichen? Netzwerkprogrammierung 8
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
D Socket Verwirrung bei Sockets Netzwerkprogrammierung 1
E Mehrere Sockets Netzwerkprogrammierung 2
N Fragen zu Sockets Client Netzwerkprogrammierung 3
A Sockets Serialisierung Netzwerkprogrammierung 1
K Threads closen und Sockets schliessen Netzwerkprogrammierung 5
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
T Socket Bidirektionale Verbindung mit Sockets Netzwerkprogrammierung 8
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
C Socket Datagram-Sockets mit integrierter Message Queue? Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
F Technologiewahl: Swing/RMI/Sockets Netzwerkprogrammierung 13
B Sockets, Threads & Plugins Netzwerkprogrammierung 7
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
M Socket Sockets Grundlage Netzwerkprogrammierung 25
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
D Socket Raw Sockets mit java.net.*? Bsp ICMP Netzwerkprogrammierung 7
H Komprimierte Sockets Netzwerkprogrammierung 4
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
L Sockets übergeben Netzwerkprogrammierung 4
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
B Socket Was muss man bei Sockets beachten? Netzwerkprogrammierung 10
N Socket Sockets und Events Netzwerkprogrammierung 11
A Programm umschreiben von Pipes auf Sockets Netzwerkprogrammierung 12
B Paralleler Dateitransfer: Ein Client - Mehrere Sockets? Wie connecten? Netzwerkprogrammierung 16
D RMI oder Sockets Netzwerkprogrammierung 4
P Sockets +Port Forwarding = Chaos Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
Q Thread und Sockets... Netzwerkprogrammierung 2
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
J Array oder Object über Sockets Netzwerkprogrammierung 8
O Sockets -- Einsieg Netzwerkprogrammierung 3
S Sockets und gzip Netzwerkprogrammierung 8
B Nachricht über Sockets kommt nicht an Netzwerkprogrammierung 8
data89 Sockets: ein alter Hut - für Euch - für mich nicht! Netzwerkprogrammierung 10
S Wiedereinmal Sockets ;-) Netzwerkprogrammierung 15
J Ascii / Unicode bei Sockets? Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
K "Ende eines Sockets" Netzwerkprogrammierung 9
A Sockets Netzwerkprogrammierung 10
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
C Einfacher Filedownload mit Sockets geht nicht für pdffiles Netzwerkprogrammierung 16
E Sockets, readLine() Netzwerkprogrammierung 7
M Sockets und InputStream Netzwerkprogrammierung 8
G Verbindung über Sockets Netzwerkprogrammierung 2
S zip-files über sockets übertragen Netzwerkprogrammierung 11
G immer wieder gleiche Sockets Netzwerkprogrammierung 2
V Suche Alternative zu Sockets Netzwerkprogrammierung 3
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
A Datenverlust (zuviele Daten!) über Sockets Netzwerkprogrammierung 4
AlClemento Sockets -> BufferedReader Problem Netzwerkprogrammierung 2
F Problem mit Threads und Sockets Netzwerkprogrammierung 3
B Übertragung via Sockets Netzwerkprogrammierung 12
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
T Sockets Verständnisfrage: abwechelnd lesen-schreiben Netzwerkprogrammierung 4
S Habe ein Problem mit Sockets -> Client Server Netzwerkprogrammierung 2
G Strings über Sockets senden Netzwerkprogrammierung 5
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
Y buch: Netwerprogrammierung und Sockets Netzwerkprogrammierung 2
B Eigenes Protokoll über Sockets verschicken Netzwerkprogrammierung 4
C Sockets über Internet Netzwerkprogrammierung 10
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
D Java Sockets Probs Netzwerkprogrammierung 4
N Verarbeitung nach Weiterleitung in Sockets Netzwerkprogrammierung 2
A Serialisierung über Sockets möglich? Netzwerkprogrammierung 3
M sockets (security) Netzwerkprogrammierung 2
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
FrankenDerStein Socket UDP Multithreading für ein Port Netzwerkprogrammierung 2
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
B Webview für Anwendung Netzwerkprogrammierung 7
M Sicheres Login-System für App implementieren Netzwerkprogrammierung 6
J Netty umsetzung für ein Protokoll Netzwerkprogrammierung 1
J ERM für kleine Verwaltungsdatenbank Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
Messoras Launcher für mein Spiel Netzwerkprogrammierung 7
F Einfaches Gateway für Log-Files Netzwerkprogrammierung 1
P RMI - Neue eigene Instanz für jeden Aufruf auf nicht serialisierbares Objekt - wie? Netzwerkprogrammierung 0

Ähnliche Java Themen

Neue Themen


Oben