
import java.net.*; |
import java.util.*; |
import java.io.*; |
public class ChatServer{ |
public static void main(String[] args){ |
Hashtable<String,DataOutputStream> userList = new |
Hashtable<String,DataOutputStream>(); |
String name; |
DataInputStream dis; |
DataOutputStream dos; |
|
try{ |
ServerSocket ss = new ServerSocket(8999); |
while(true){ |
Socket s = ss.accept(); |
dis = new DataInputStream(s.getInputStream()); |
dos = new DataOutputStream(s.getOutputStream()); |
name = dis.readUTF(); |
userList.put(name,dos); |
new MyServerReader(name,dis,userList).start(); |
} |
}catch(Exception e){ |
e.printStackTrace(); |
} |
} |
} |
class MyServerReader extends Thread{ |
private String name; |
private DataInputStream dis; |
private Hashtable<String,DataOutputStream> userList; |
|
public MyServerReader(String name,DataInputStream dis,Hashtable<String,DataOutputStream> userList){ |
this.name = name; |
this.dis = dis; |
this.userList = userList; |
} |
|
public void run(){ |
String info; |
try{ |
transimitMessage(name+"in!","--Server Info--"); |
while(true){ |
info = dis.readUTF(); |
if(info.equals("bye")){ |
DataOutputStream dos = (DataOutputStream)(userList.get(name)); |
Thread.sleep(1000); |
dos.close(); |
dis.close(); |
userList.remove(name); |
transimitMessage(name+"out","--Server Info--"); |
break; |
}else if(info.length()>0){ |
transimitMessage(info,name); |
} |
} |
}catch(Exception e){ |
e.printStackTrace(); |
} |
} |
|
public void transimitMessage(String msg,String name){ |
Collection doses = userList.values(); |
DataOutputStream dos; |
for(Object o:doses){ |
dos = (DataOutputStream)o; |
try{ |
dos.writeUTF(name+":"+msg); |
}catch(Exception e){ |
e.printStackTrace(); |
} |
} |
} |
} |




高级设计师
by: 由月君 发表于:2013-10-26 16:11:26 顶(1) | 踩(0) 回复
沙发
回复评论