// bwk import java.net.*; import java.io.*; public class multiserver { public static void main(String[] args) { int port = 5194; if (args.length > 0) port = Integer.parseInt(args[0]); try { ServerSocket server = new ServerSocket(port); while (true) { Socket sock = server.accept(); System.err.println("multiserver " + sock); new echo(sock); } } catch (IOException e) { e.printStackTrace(); } } } class echo extends Thread { Socket sock; echo(Socket sock) { this.sock = sock; start(); } public void run() { try { BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); String s; while ((s = in.readLine()) != null) { out.write(s); out.newLine(); out.flush(); System.err.println(sock.getInetAddress() + " " + s); if (s.equals("exit")) break; if (s.equals("die!")) // a way to kill the server System.exit(0); } sock.close(); } catch (IOException e) { System.err.println("server exception " + e); } } }