Friday, March 8, 2013

VerySimpleChatServer

import java.io.*;
import java.net.*;
import java.util.*;


public class VerySimpleChatServer {
    ArrayList clientOutputStreams;

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new VerySimpleChatServer().go();

    }
    public class ClientHandler implements Runnable{
        BufferedReader reader;
        Socket sock;
        public ClientHandler(Socket clientSocket){
            try{
            sock = clientSocket;
            InputStreamReader StreamReader = new InputStreamReader(sock.getInputStream());
            reader = new BufferedReader(StreamReader);
            }
            catch(Exception ex){
                ex.printStackTrace();
            }
        }

        @Override
        public void run() {
            // TODO Auto-generated method stub
            String message;
            try{
                while((message=reader.readLine())!=null){
                    System.out.println("read "+message);
                    tellEveryone(message);
                }
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
       
    }
    public void go(){
        clientOutputStreams = new ArrayList();
        try{
            ServerSocket serverSock = new ServerSocket(5000);
            while(true){
                Socket clientSocket = serverSock.accept();
                PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
                clientOutputStreams.add(writer);
               
                Thread t = new Thread(new ClientHandler(clientSocket));
                t.start();
                System.out.println("got a connection");
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }
       
    }
    public void tellEveryone(String message){
        Iterator it = clientOutputStreams.iterator();
        while(it.hasNext()){
            try{
            PrintWriter writer = (PrintWriter) it.next();
            writer.println(message);
            System.out.println("writing");
            writer.flush();
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }

}

No comments:

Post a Comment