Threads auflisten und nacheinander ansprechen

A

Alyra

Gast
Guten Morgen,

ich bin dabei, ein Spiel zu entwickeln, dass auch über Netzwerk laufen soll. Leider sind meine Networking-Kenntnisse noch recht gering, weshalb ich ein wenig Hilfe benötige.

Ich habe eine Server-Klasse erstellt, auf der die gesammte Spielmechanik läuft. Der Server öffnet einen Socket, zu dem andere Rechner aus dem Netzwerk connecten können. Für jeden verbundenen Spieler wird ein eigener Thread erstellt, sodass mehr als nur ein Client auf den Socket verbinden kann. Nun soll der Server ab Spielbeginn immer einem Clienten ein Signal senden, dass er nun am Zug ist. Natürlich soll es immer die selbe Reihenfolge haben, erst kommt Spieler 1 dran, dann Spieler 2, dann 3 und dann wieder 1.

Ist es irgendwie möglich, die Threads in eine Art Array zusammenzufassen und dann erst dem ersten Client das Signal zu geben, dass er am Zug ist, danach den Spielzug durchführt und dan dem 2. Spieler das Signal zu senden? Wenn ja, kann mir jemand erklären wie das geht?

Liebe Grüße
 
S

SlaterB

Gast
das ist nicht anders als alles andere was erklärt werden muss,
wenn du drei ints addieren willst, dann erst a + b, danach + c

hier musst du beim Aufbau der Verbindung das Thread-Objekt oder etwas vergleichbares in ein/e Array/Liste speichern,
später auf dieses zugreifen, der Reihe nach durcharbeiten, mit jedem Client so kommunizieren wie es eben gerade richtig ist,
solange wartet der Server oder was immer angebracht ist

das sind aufgezählte Normalitäten weil die Frage an sich nichts bestimmtes beinhaltet, sicherlich sind letztlich hunderte Zeilen Code nötig, aber hier können ja nicht alle Details des kompletten Spiels aufgezählt werden,
was ist deine konkrete Frage? die Clients werden durch irgendein Objekt repräsentiert, dieses kommt sortiert in eine Liste, fertig

wie man generell mit einem einzelnen Client kommuniziert und was der Rest solange macht, wäre schon wieder ein ganz anderes Thema
 
A

Alyra

Gast
Ich denke, letzteres ist so meine frage. Wie kann der Host einem einzenlnen Thread kommunizieren und danach mit dem nächsten Thread...
 
S

SlaterB

Gast
auch wieder: wie nicht?
eine absolute Grundlagenfrage, A sendet an B, wartet auf Antwort, Antwort kommt, fertig

hast du je von einem Server an einen beliebigen einzelnen Client irgendetwas gesendet und dieser nach etwas Zeit irgendwas zurück?
was ist hier anders, wo liegt ein Problem vor?

Java:
List<ClientHandler> list = ..;
for (ClientHandler c : list) {
  c.sende("du bist dran "+aktuellerProgrammzustand());
  String antwort = c.warteAufAntwort();
  verarbeiteZug(c, antwort);
  // fertig für dieses c, nächster in der Schleife ist dran
}
je nach Beliebigkeit kann man es komplizierter machen,
z.B. nach jeder Client-Aktion an alle eine Info mit den aktuellen Änderungen schicken + Info wer gerade dran ist
 
A

Alyra

Gast
okay, das ist schonmal sehr verständlich, danke^_^

Ich hab jetzt in der Host-Klasse eine Liste erstellt:

Java:
List<MonopolyThread> spielerListe;

weiter unten habe ich dich methode "verbinden", die so aussieht:

Java:
public void verbinden ()
    {
    	while (true)
    	{
    		try
    		{
    			System.out.println("Verbinden...");
    			
    			socket = server.accept();
    			thread = new MonopolyThread(socket);
    			thread.start();
    			spielerListe.add(thread);
    			System.out.println("Verbunden mit " + socket);
    		}
    		catch (IOException e)
    		{
    			System.out.println("Serverfehler " + e);
    		}
    	}
    }

Und weiter unten dann noch eine for-Schleife, die im Grunde das macht was du im letzten Post geschrieben hast. Müsste so stimmen, oder?
 
S

SlaterB

Gast
wenn du es so hast wie ich es geschrieben habe muss es natürlich stimmen, klar ;)

naja, mit 5 Zeilen ist noch nicht viel Land gewonnen, das hilft ein bisschen aber muss nicht für alle Programme das richtige sein
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T TCP mit und ohne Threads Netzwerkprogrammierung 1
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
D Exception Handling bei In/Outputsockets in eigenen Threads Netzwerkprogrammierung 1
C Frage zu Threads & Server Netzwerkprogrammierung 4
K Threads closen und Sockets schliessen Netzwerkprogrammierung 5
J Threads & Streams Netzwerkprogrammierung 9
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S HTTP ServerSockets und Threads Netzwerkprogrammierung 5
B Sockets, Threads & Plugins Netzwerkprogrammierung 7
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
R Threads mit einem WebService Netzwerkprogrammierung 4
M Verständnisfrage zu RMI und Threads Netzwerkprogrammierung 2
L einfacher server ohne threads Netzwerkprogrammierung 4
C I/O - Synchronisation durch Threads in einem ChatClient Netzwerkprogrammierung 4
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
P Threads einbinden Netzwerkprogrammierung 11
P RMI Callback (mit Threads?) Netzwerkprogrammierung 3
T RMI Threads und Synchronized Netzwerkprogrammierung 13
A Datenverteilung: Mehrere Threads verwenden? Netzwerkprogrammierung 4
S Threads beim Server koordinieren Netzwerkprogrammierung 5
L ClientServer mit 2 Threads Netzwerkprogrammierung 5
N Threads und Socketprogrammierung Netzwerkprogrammierung 4
G 1 Socket 2 Threads problem Netzwerkprogrammierung 13
K Problem mit Threads Netzwerkprogrammierung 3
S Threads bei Web Service sinnvoll oder Alternative? Netzwerkprogrammierung 2
K Hintergrund - Threads Netzwerkprogrammierung 3
G Socket Programmierung - Max. Threads Netzwerkprogrammierung 5
C NetScanner arbeitet trotz Threads langsam Netzwerkprogrammierung 6
L UDP-Server mit Threads Netzwerkprogrammierung 8
K Windows 10 Threads gleichzeitig Netzwerkprogrammierung 18
C Join von Threads bei I/O-Operation Netzwerkprogrammierung 6
F Threads synchronisieren mit Pipes Netzwerkprogrammierung 3
G benötige Beispiel für parallel ablaufende Threads Netzwerkprogrammierung 3
F Problem mit Threads und Sockets Netzwerkprogrammierung 3
TRunKX Threads beenden sich selber? Netzwerkprogrammierung 6
T Kleiner Chatserver: Threads oder Multiplex? Netzwerkprogrammierung 18
C IP auflisten Netzwerkprogrammierung 12
D Geräte im Lokalen netzwerk auflisten Netzwerkprogrammierung 1
M Pc's im Netzwerk auflisten Netzwerkprogrammierung 2
V Dateien Auflisten Netzwerkprogrammierung 3
F Asynchrone Methoden nacheinander aufrufen Netzwerkprogrammierung 6
J Nacheinander Verbindungen eingehen Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben