Toon posts:

[JAVA] Client-Server probleem (sockets)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben nu bezig een client server systeem te schrijven, dit gaat met behulp van sockets. Nu is het zo dat ik dus een client met de server kan laten communiceren, maar wat me maar niet lukt is om twee clients met elkaar te laten praten (soort chat-systeem zeg maar).
Ik dacht dat als ik een thread opstart die als server fungeert en dus continue controleert of er een verbinding aanvraag is, deze thread een andere thread op zou kunnen starten voor de daadwerkelijke connectie met de client.
Dit lukt allemaal wel, en meerdere clients kunnen gewoon connecten met de server, dat werkt allemaal wel, maar ik zou niet weten hoe ik de clients met elkaar kan laten communiceren, aangezien ik niet weet wanneer clientA praat, omdat dat een andere classe is.
Ik heb ook al geprobeerd om 1 outputstream aan te maken en die aan alle klassen te laten meegeven zodat ze daarover communiceren, maar dat werkt (uiteraard) niet.
Wie kan mij uitleggen hoe ik dit tot stand kan brengen??

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

je moet een thread maken voor elke connectie, en deze een link terug geven aan de "main-class" zoiets als:
code:
1
connections.add(new Connection(serverSocket.accept(),this));

en dan in de connection die je aangemaakt hebt heb jezoiets als:
code:
1
2
3
4
5
6
7
8
public Connection(Socket socket,Server server) {
this.socket = socket;
this.server = server;
}

public void send(String string) {
  server.sendToAll(string);
}

Verwijderd

Topicstarter
Maar dan moet ik dus in de functie add() een array bij gaan houden van alle lopende connecties oid??

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 13 september 2002 @ 12:15:
Maar dan moet ik dus in de functie add() een array bij gaan houden van alle lopende connecties oid??

Dat is inderdaad een optie, moet niet natuurlijk.

Je kan ook een Vector maken, of een Observable en elke Client een Observer van die Observable maken, noem maar op :P

Verwijderd

Topicstarter
ACM schreef op 13 september 2002 @ 12:27:

[...]

Dat is inderdaad een optie, moet niet natuurlijk.

Je kan ook een Vector maken, of een Observable en elke Client een Observer van die Observable maken, noem maar op :P
Aha, ikke snap :? :? :? :P

Ik zal eens naar Vectoren gaan kijken dan, want daar weet ik eigenlijk nog niets van. Maar het is toch zo dat je zoveel Vectoren aan kan maken als je wilt, in tegenstelling tot een array waar je dus van te voren aan moet geven hoeveel elementen je kunt gebruiken. Of denk ik nu ook weer niet goed?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Een Vector is een dynamische array (dat houd in dat hij kan groeien en krimpen). Maar een Vector heeft gewoon een array in zich, die hij als het moet gaat vervangen door een grotere (maar hier merk je niets van).

En verder is de Collection Framework van Java erg fijn om mee te werken, dus ik raad je ook aan om die goed te bestuderen.

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

je kan gewoon objecten toevoegen aan een vector

Verwijderd

Op http://www.javaworld.com/...1-1997/jw-01-chat-p2.html zie je een voorbeeld van een chat-systeem wat gebruikt maakt van vectoren.

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

je kunt bijvoorbeeld als sendtoall zoiets als het volgende gebruiken:
code:
1
2
3
4
5
Enumeration connectionsEnum = connections.elements();
while (connectionsEnum.hasMoreElements()) {
    Connection connection = (Connection)connectionsEnum.nextElement();
    connection.send(text);
}

Verwijderd

Topicstarter
Verwijderd schreef op 13 september 2002 @ 12:34:
Op http://www.javaworld.com/...1-1997/jw-01-chat-p2.html zie je een voorbeeld van een chat-systeem wat gebruikt maakt van vectoren.
Die ben ik nu dus aan het bestuderen, bedankt voor de link iig
Pagina: 1