Holde styr på klienter!

Tags:    java

import java.io.*;
import java.net.*;

public class tServer2 {


public static void main(String[] args) {
try {
int klientID = 0;
ServerSocket ss = new ServerSocket(9999);
while(true) {
Socket s = ss.accept();
ClientHandler cli = new ClientHandler(s);
cli.start();
klientID = klientID + 1;
System.out.println("Klient kom " + klientID);
}
} catch (IOException e) {
e.printStackTrace();
}

}
}

class ClientHandler extends Thread {
private BufferedReader br;
private PrintWriter pw;
public ClientHandler(Socket s) {
try {
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
pw = new PrintWriter(s.getOutputStream(), true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
try {
String line;
while((line = br.readLine()) != null) {
pw.println(line + '\\0');
pw.flush();
}
} catch (IOException e) {
// nothing
} finally {
System.out.println("Client leaving");
}
}
}



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Jeg har ike forstand på Java men du kunne jo få clienten til at sende sit ID til serveren så den ved at den forlader serveren.



Hov, forkert

Hej.. jeg sidder her med et stort problem..

Jeg har lavet en server, og vil gerne håndterer hvornår klienterne lukker vinduet.

Det virker fint, med at den udskrive "Client leaving", men hvordan skal serveren vide, HVEM som lukkede klient-vinduet?

Jeg giver dem id's, på dem som kommer ind.

Please giv mig en forklaring på hvordan det løses / hvad man skal gøre!
Fold kodeboks ind/udKode 

Du bliver nødt til at give den enkelte klasse et id:
Fold kodeboks ind/udKode 




Hov, forkert

Hej.. jeg sidder her med et stort problem..

Jeg har lavet en server, og vil gerne håndterer hvornår klienterne lukker vinduet.

Det virker fint, med at den udskrive "Client leaving", men hvordan skal serveren vide, HVEM som lukkede klient-vinduet?

Jeg giver dem id's, på dem som kommer ind.

Please giv mig en forklaring på hvordan det løses / hvad man skal gøre!
Fold kodeboks ind/udKode 




Okay, mange tak. Havde hørt en del om det, men fattede det ikke sådan helt.

cli.start(); melder fejl.

Skal cli, ikke defineres som et array?



Undskyld. Men nu er jeg tilbage, og den virker fint. Men desværre sender den ikke tilbage til alle på min port 9999. Det virker fint hos mig selv, men ikke hos andre.

Hvad gør jeg forkert?

Fold kodeboks ind/udKode 




Vil du sende data ud til klienterne ?
Gem alle klienterne i en liste (Vector eller lignende), og når du så modtager data fra en klient, så render du gennem listen og sender til alle (måske bortset fra klienten som sendte det).



t