Ener: Thread, Socket Server

Beitrag lesen

Hallo,
ich habe mir gerade einen Socket Server, und passent dazu einen Client, zur übertragung von Texten, programmiert. Das funktioniert wunderbar, der Client nimmt Verbindung zum Socket Server (Server) auf, schickt einen Text, der Server antwortet, der Client erhält das, und der Client ist tot, und Der Server kann eine Neue Verbndung aufnehmen....
So, jetzt hab ich den Client so umgeschrieben, dass er die Verbindung hält. Das Problem allerdings ist jetzt, das der Server auch nur noch einen Client versorgen kann. ICh hab gehört man kann dieses Problem mit threads lösen, allerdings ist mir überhaupt nicht klar wie ich das auf diesen Quelltext anwenden kann.

  
import java.net.*;  
import java.io.*;  
  
public class EchoServer {  
 /** Unser server seitiger Socket, der aif ein Rendezvous wartet */  
 protected ServerSocket sock;  
 /** Port nummer **/  
 public final static int ECHOPORT = 7;  
 /** Flag zur Debug-Steuerung **/  
 protected boolean debug = true;  
  
  
 /** main: konstruiere und starte */  
 public static void main(String[] args) {  
  
   new EchoServer(ECHOPORT).handle();  
 }  
 public EchoServer(int port) {  
  try {  
   sock = new ServerSocket(port);  
  }  
  catch (IOException e) {  
   System.err.println("I/0-Fehler beim Einrichten");  
   System.err.println(e);  
   System.exit(1);  
  }  
 }  
  
 /** Hier werden die Verbindungen verarbeitet. */  
  
 protected void handle() {  
  Socket ios = null;  
  BufferedReader is = null;  
  PrintWriter os = null;  
  while (true) {  
   try {  
    ios = sock.accept();  
    System.err.println("Akzeptiert von " + ios.getInetAddress().getHostName());  
    is = new BufferedReader(new InputStreamReader(ios.getInputStream(), "8859_1"));  
    os = new PrintWriter(new OutputStreamWriter(ios.getOutputStream(), "8859_1"), true);  
    String echoLine;  
    while ((echoLine = is.readLine()) != null) {  
     System.err.println("Gelesen: " + echoLine);  
     os.print(echoLine + "\r\n");  
     os.flush();  
     System.err.println("Geschrieben: " + echoLine);  
    }  
    System.err.println("Alles erledigt!");  
   }  
   catch (IOException e) {  
    System.err.println(e);  
   }  
   finally {  
    try {  
     if (is != null) {  
      is.close();  
     }  
     if (os != null) {  
      os.close();  
     }  
     if (ios != null) {  
      ios.close();  
     }  
    }  
    catch (IOException e) {  
     //unwahrscheinlich  
     System.err.println("I/0-Fehler beim shließen");  
    }  
   }  
  }  
  /* NOTREACHED */  
 }  
}  

Vielen Dank schon einmal im Vorraus!!!