Moin moin, ich habe hier meine ServerKlasse, zu der im Moment leider nur ein Client connecten kann. Die letzten Stunden hab ich jetzt damit verbracht, mich durch zu googlen, was allerdings nichts gebracht hat....
Was muss ich an meinem Code verändern, damit mehrere Clients connecten können?
So long,
Zel
Java:
package connection;
//Importe der benoetigten Bibliotheken
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import datenklassen.*;
import gui.Frame;
import server.*;
/**
* Anlegen der Klasse Server die das Stellen des Servers ermˆglicht.
*
*/
public class Server extends Thread {
// Anlegen der Variable port zum bestimmen des genutzten Serverports
private int port = 2000;
private List<Socket> client = new ArrayList<Socket>(50);
private List<Msg> msgListe = new ArrayList<Msg>();
private List<User> userListe = new ArrayList<User>(50);
private ServerSocket serverSocket = null;
private boolean wahr = true;
private Input input;
private Frame frame = new Frame();
private boolean serverClosed = false;
private int clientCount = 0;
private int socketId = 0;
private DataOutputStream out;
/**
* Anlegen der Methode Server um das korrekte Stellen des Servers
* ermˆglicht.
*/
public Server() {
// do {
try {
serverSocket = new ServerSocket(port);
int i = 0;
Verbindung();
while (wahr) {
if (!client.isEmpty()) {
input = new Input(client.get(i));
frame.setServerMessage(input.getNachricht());
while (i < clientCount) {
out =
new DataOutputStream(client.get(socketId)
.getOutputStream());
out.writeBytes(input.getNachricht() + "\n");
i++;
}
if (serverClosed) {
out.close();
client.get(socketId).close();
frame.setServerMessage("Clients geschlossen");
serverSocket.close();
}
if (i == clientCount) {
i = 0;
}
}
}
// } while (!wahr);
} catch (IOException e) {
}
}
public void Verbindung() throws IOException {
boolean w = true;
this.start();
while (w) {
client.add(serverSocket.accept());
frame.setServerMessage("Client verbunden");
w = false;
clientCount++;
}
}
public void closeUser(String user) {
int test = UserIdent(user);
if (test >= 0) {
}
}
public int UserIdent(String user) {
int i = 0;
while (i < clientCount) {
if (userListe.get(i).getName() == user) {
return i;
}
i++;
}
return -1;
}
// public void setClient(Socket client) {
// this.client = client;
// }
public void setServerClosed(boolean serverClosed) {
this.serverClosed = serverClosed;
}
}
Was muss ich an meinem Code verändern, damit mehrere Clients connecten können?
So long,
Zel