프로젝트 Server
 

import java.io.*;

import java.net.*;

import java.util.*;

 

class TempoSocket{

            

             private Socket tempoSocket;

             private PrintWriter pw;

            

             public TempoSocket(Socket tempoSocket){

                          

                           this.tempoSocket=tempoSocket;

                           try{

                                        pw=new PrintWriter(tempoSocket.getOutputStream(), true);

                           }catch(IOException e){}

                          

             }

             public void send(String str){

                           pw.println(str+"\n");

             }

            

}

 

class ServerThread extends Thread{

 

             private Socket clntSocket;

             private BufferedReader br;

             private Vector clntList;

            

             public ServerThread(Socket clntSocket, Vector clntList){

                          

                           this.clntSocket=clntSocket;

                           this.clntList=clntList;

                          

                           try{

                                        br=new BufferedReader(new InputStreamReader(clntSocket.getInputStream()));

                           }catch(IOException e){}

                          

             }

             public void run(){

                          

                           while(true){

                                        String str=null;

                                        try{

                                                     str=br.readLine();

                                        }catch(IOException e){}

                                        for(int i=0; i<clntList.size(); i++){

                                                     TempoSocket tSocket=(TempoSocket)clntList.get(i);

                                                     tSocket.send(str);

                                        }

                           }

             }

            

}

 

class JavaServer{

            

             public static void main(String[] args){

                          

                           System.out.println(" Welcome to Chatting Server");

                          

                           ServerSocket servSocket;

                           Vector clntList;

                          

                           try{

                                        servSocket=new ServerSocket(8088);

                                        clntList=new Vector(10);

                                        while(true){

                                                     Socket tempo=servSocket.accept();

                                                     TempoSocket tSocket=new TempoSocket(tempo);

                                                     clntList.add(tSocket);

                                                    

                                                     ServerThread st=new ServerThread(tempo, clntList);

                                                     st.start();

                                        }

                           }catch(Exception e){}

                          

             }

            

}


3가지 클래스로 구분 되어있습니다.
1. TempoSocket 클래스
2. ServerThread 클래스
3. JavaServer 클래스

TempoSocket 클래스는 클라이언트 요청에 의한 socket 생성시 내용을 담기위해 만들었습니다.
 * 여러명이 동시 접속하여 채팅 할 경우, 서버가 한 호스트로 부터 받은 내용을 다시 여러 호스트로 뿌려주기 
   위해서 각각의 클라이언트 소켓의 전송경로 clntSocket.getOutputStream()를 기억하기 위해서..
ServerThread 클래스는 여러 클라이언트 소켓의 동시 진행을 위해서 만들엇습니다. 실시간 채팅에서
이 기능을 구현하지 않으면 아마도 채팅글 입력 순서에 따라 출력 되는게 아니라 프로세스 진행 순서에
따라서 출력되지 않을까 싶습니다.
 * 10명이 채팅시 10개의 소켓이 활성화 상태이며, 한 클라이언트가 메세지 전송시 해당 소켓을 인수로 사용하는
    BufferedReader 객체가 이를 읽은 후 , 벡터에 저장된 10개의 클라이언트 소켓의 정보를 담은 객체를 이용해서
    모두 뿌려줌
JavaServer 클래스는 main메소드가 있고 무한 루프를 돌면서 새로운 클라이언트 접속시 위의 두 과정을 진행 시킴

  

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by LetsJava | 2008/11/28 14:28 | 시스템프로젝트 | 트랙백 | 덧글(2)
트랙백 주소 : http://LetsJava.egloos.com/tb/1191154
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/11/30 21:19
이것이 완성된 서버 프로그램은 아니죠?
Commented by 윤석훈 at 2008/11/30 23:18
ㅜ.ㅡ

:         :

:

비공개 덧글