'chat server program'에 해당되는 글 1건

  1. 2008.05.14 chat Server

본 코드는 Head first Java의 예제 소스이다.

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

public class VerySimpleChatServer {
  ArrayList clientOutputStreams;
 
  public class ClientHandler implements Runnable{
   BufferedReader reader;
   Socket sock;
   
   public ClientHandler(Socket clientSocket){
    try{
     sock = clientSocket;
     InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
     reader = new BufferedReader(isReader);
     
    }catch(Exception ex){
     ex.printStackTrace();
    }
   
   }
   
   public void run(){
    String message;
    try{
     while((message = reader.readLine()) != null){
      System.out.println("read "+ message);
      tellEveryone(message);
     }
    }catch(Exception ex){
     ex.printStackTrace();
    }
   
   }
   
  }
  public static void main(String[] args){
   new VerySimpleChatServer().go();
  }
 
  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 ex){
    ex.printStackTrace();
   }
   
  }
 
  public void tellEveryone(String message){
   Iterator it = clientOutputStreams.iterator();
   while(it.hasNext()){
    try{
     PrintWriter writer = (PrintWriter)it.next();
     writer.println(message);
     writer.flush();
    }catch(Exception ex){
     ex.printStackTrace();
    }
   }
  } 

}

Posted by 서오석
,