티스토리 뷰

반응형

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

class ClientThread extends Thread{

	  Socket					socket; // 클라이언트 소켓
      MultiServer			server; // 서버 소켓
      BufferedReader	reader; // 입력 스트림
      BufferedWriter		writer; // 출력 스트림
      String						userMsg; // 메시지
      String						nickName; // 클라이언트 닉네임

      /*
       * 클라이언트 쓰레드 초기화
       */
      public ClientThread(Socket userSocket, MultiServer mainServer) throws Exception{
		  socket = userSocket;
		  server  = mainServer;
             
          reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
          writer  = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
      }


// Thread run 메소드
      @Override
     public void run(){

			 try {
						 while((userMsg=reader.readLine()) != null){

							  if  (userMsg.startsWith("001")){					// Client List
									  nickName=userMsg.substring(3);
									  server.broadCast("002 new Client["+nickName+"]님 입장");
									  server.broadClientList();

								} else if(userMsg.startsWith("002")){    // Chatting 
								   server.broadCast("002 "+userMsg.substring(3));
								} else { 
								} // if
							 } // while

						 } catch(SocketException se){   // Client Connection Exception

						 } catch(Exception e){
									 System.out.println("run:"+e);
						 } // try
					
					closeClient();
      }

// 메시지 전송
       public void sendMessage(String server_message) {
          
		    try {
					  System.out.println("메시지 전송 :"+server_message);
					  writer.write(server_message+"\n");
				      writer.flush(); // 초기화(비워짐)

		  	 } catch(Exception e) {
					  System.out.println("sendMessage 예외처리 :"+e);
			 }
	   }


	  public void closeClient() {
      
   	        try {
						 if(server!=null) server.deleteFromServer(this);
						 if(writer!=null) writer.close();
						 if(reader!=null)reader.close();
						 if(socket!=null)socket.close();
				  
			 } catch(Exception e) {
					 System.out.println("closeClient:"+e);
             }
	   }
}

 

채팅 서버 구축 후 클라이언트 쓰레드 부분 설정

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31