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 |