Padawan
Erfahrenes Mitglied
Hallo Leute,
ich hab mir folgenden EchoServer programmiert, der Kleinbuchstaben in Großbuchstaben und Umgekehrt umwandelt:
Meine frage ist, wie kann man das so gestallten, dass der Server bis zu 5 Client/telnet anfragen annehmen kann bzw. für jeden Client, der anfragt/akzeptiert wird ein Thread erstellt wird?
Lg Padawan
ich hab mir folgenden EchoServer programmiert, der Kleinbuchstaben in Großbuchstaben und Umgekehrt umwandelt:
Java:
import java.io.*;
import java.net.*;
public class EchoServer {
public static void main(String[] args)throws IOException{
int port = 4711;
//Knotenpunkt für den Server
ServerSocket sock = new ServerSocket(port);
//verbindungskanal zum Client
Socket stream = sock.accept();
//Aufruf des Threats bzw. übergabe von parametern
Thread echoServ = new EchoThread(stream, sock);
echoServ.start(); //Starten des Threads
}
}
Java:
import java.io.*;
import java.net.*;
//Es wir eine Klasse erzeugt, die von einem Thread abgeleitet wurde
public class EchoThread extends Thread {
private Socket stream;
private ServerSocket socke;
public EchoThread(Socket stream, ServerSocket sock){
//Hier im Konstruktor werden Variablen definiert, die
//in der Klasse definiert werden
this.stream = stream; //
this.socke =sock;
}
public void run(){
try{
//Anlegen der kommunikations Stream Objekte
BufferedReader in = new BufferedReader(new InputStreamReader(stream.getInputStream())); //für die zum Server ankommenden Streams/Daten
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(stream.getOutputStream())); //Für die zum Client gehenden Streams/Daten
//nachricht vom Client lesen
StringBuffer daten = new StringBuffer();
//Ein und Ausgabe in einer endlosschleife
while(true){
String tmp = in.readLine(); //Einlesen der ankommenen Zeichen in den String tmp
for (int i = 0; i < tmp.length(); i++) {
String zeichen = tmp.substring(i, i + 1);
if (!zeichen.equals(zeichen.toUpperCase())) { //Umwandeln der kleinbuchstaben in großbuchstaben
daten.append(zeichen.toUpperCase());
}else if(!zeichen.equals(zeichen.toLowerCase())) {//Umwandeln der großbuchstaben in kleinbuchstaben
daten.append(zeichen.toLowerCase());
}else {
daten.append(tmp); //Anhängen der Strings an den StringBuffer daten
}
}
daten.append("\0");
System.out.println("Socket-Server: Client: " + daten.toString()); //Ausgabe der Daten, welche vom Client Empfangen wurden
//public static String swapUpperLower(String in) {
out.write("Server-Socket: Client deine Nchricht:");
out.write(daten.toString()); //schickt dem Client seine daten zurück
out.write("\n");
out.flush(); //leeren bzw. schieben des Zwischenpuffers zum Client
daten.delete(0,daten.length());
//Schließen der verbindung
if(tmp.contains("end") ||tmp.contains("END")){ //Verbindung Schließen
stream.close();
socke.close();
this.interrupt();
}
if(tmp.contains("stop") ||tmp.contains("STOP")){ //Server beenden
socke.close();
System.out.close();
System.exit(0);
}
} //Ende While
}catch(IOException e){
System.err.println("Fehler in der Socket Verbindung");
e.printStackTrace();
}
}
}
Meine frage ist, wie kann man das so gestallten, dass der Server bis zu 5 Client/telnet anfragen annehmen kann bzw. für jeden Client, der anfragt/akzeptiert wird ein Thread erstellt wird?
Lg Padawan
Zuletzt bearbeitet: