본문 바로가기

개발하자/JAVA고급

awt 채팅 Server&Guest

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

class Guest extends Thread{
 String id;
 Server server; Socket socket;
 BufferedReader br;
 BufferedWriter bw;
 Guest(Server server, Socket socket) throws Exception{
 this.server=server;
 this.socket=socket;
 InputStream is=socket.getInputStream();
 InputStreamReader isr=new InputStreamReader(is);
 br=new BufferedReader(isr);

 OutputStream os=socket.getOutputStream();
 OutputStreamWriter osw=new OutputStreamWriter(os);
 bw=new BufferedWriter(osw);
 }
 public void run(){
 try{
 while(true){
 String line=br.readLine();
 System.out.println(line);
 String array[]=line.split("/");
 switch(array[0]){
 case "enter":
 id=array[1];
 server.broadcast(line);
 server.makeGuestlist();
 break;
 case "msg" :
 String str="msg/["+id+"]"+array[1];
 server.broadcast(str);
 break;
 }
 }
 }catch(Exception e){
 System.out.println("읽다가오류남~");
 }
 }
public void sendMsg(String msg) throws Exception{
 bw.write(msg+"\n"); bw.flush();
 }
}
class Server{
 ArrayList<Guest> list;
 void initNet() throws Exception{
 list=new ArrayList<Guest>();
 ServerSocket ss=new ServerSocket(8877);
 while(true){
 Socket s=ss.accept();
 Guest g=new Guest(this,s);
 g.start();
 addGuest(g);
 }
 }
 void addGuest(Guest g){
 list.add(g);
 System.out.println("사용자수:"+list.size());
 }
 void broadcast(String msg) throws Exception{
 for(Guest g: list){
 g.sendMsg(msg);
 }
 }
 void makeGuestlist() throws Exception{ // guestlist/홍길동/김길동/이길동/

StringBuffer buffer=new StringBuffer("guestlist/");
 for(Guest g: list){
 buffer.append(g.id+"/");
 }
 broadcast(buffer.toString());

 }
 public static void main(String args[]) throws Exception{
 Server server=new Server();
 server.initNet();
 }
}

'개발하자 > JAVA고급' 카테고리의 다른 글

파일전송  (0) 2015.02.10
퇴장기능추가  (0) 2015.02.06
awt 채팅 Client  (0) 2015.02.06
awt 양방향채팅(Server)3/3  (0) 2015.02.04
awt 양방향채팅(Guest)2/3  (0) 2015.02.04