package developer.swingtool; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector; public class DummyServer { static final int PORT = 4444; static ServerSocket serverSocket = null; private Vector<PrintWriter> printers = new Vector<PrintWriter>(); /** threaded client handler */ class ConnectionHandler extends Thread { private Socket clientSocket = null; private BufferedReader in = null; private PrintWriter out = null; public ConnectionHandler(Socket socket) { clientSocket = socket; try { in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())), true); } catch (IOException e) { System.out.println("ConnectionHandler(): " + e.getMessage()); return; } System.out.println("ConnectionHandler(): " + socket.toString() + " connected"); out.println("\n..welcome.. active connections: " + printers.size()); printers.add(out); this.start(); } @Override public void run() { String str = null; while (true) { try { str = in.readLine(); } catch (Exception e) { System.out.println("readLine(): " + clientSocket.toString() + " " + e.getMessage()); sendGroup(clientSocket.toString() + " exited"); break; } if(str.trim().length() > 1){ System.out.println("INPUT: " + clientSocket.toString() + " " + str); sendGroup(clientSocket.toString() + " " + str); } } } } void sendGroup(String str){ PrintWriter pw = null; for (int c = 0; c < printers.size(); c++) { pw = printers.get(c); if(pw.checkError()) { printers.remove(pw); pw.close(); } else { pw.println(str); } } } public DummyServer() { new Thread(new Runnable() { @Override public void run() { startCommandListener(); } }).start(); } private void startCommandListener(){ try { serverSocket = new ServerSocket(PORT); } catch (Exception e) { System.out.println("server sock error: " + e.getMessage()); return; } System.out.println("listening with socket: " + serverSocket.toString()); while(true) { try { new ConnectionHandler(serverSocket.accept()); } catch (Exception e) { try { if(serverSocket.isBound()) serverSocket.close(); } catch (IOException ee) { System.out.println("socket error: " + ee.getMessage()); return; } return; } } } public static void main(String[] args) { new DummyServer(); } }