packagechat1;import java.io.*;import java.net.*;import java.util.*;public classChatServer {boolean started = false;
ServerSocket ss= null;
List clients = new ArrayList();public static voidmain(String[] args) {newChatServer().start();
}public voidstart() {try{
ss= new ServerSocket(8888);
started= true;
System.out.println("端口已开启,占用8888端口号....");
}catch(BindException e) {
System.out.println("端口使用中....");
System.out.println("请关掉相关程序并重新运行服务器!");
System.exit(0);
}catch(IOException e) {
e.printStackTrace();
}try{while(started) {
Socket s=ss.accept();
Client c= newClient(s);
System.out.println("a client connected!");newThread(c).start();
clients.add(c);
}
}catch(IOException e) {
e.printStackTrace();
}finally{try{
ss.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}class Client implementsRunnable {privateSocket s;private DataInputStream dis = null;private DataOutputStream dos = null;private boolean bConnected = false;publicClient(Socket s) {this.s =s;try{
dis= newDataInputStream(s.getInputStream());
dos= newDataOutputStream(s.getOutputStream());
bConnected= true;
}catch(IOException e) {
e.printStackTrace();
}
}public voidsend(String str) {try{
dos.writeUTF(str);
}catch(IOException e) {
e.printStackTrace();
}
}public voidrun() {try{while(bConnected) {
String str=dis.readUTF();
System.out.println("------------来自本地服务器:" +str);for (int i = 0; i < clients.size(); i++) {
Client c=clients.get(i);
c.send(str);
}
}
}catch(EOFException e) {
System.out.println("Client closed!");
clients.remove(this);
}catch(IOException e) {
e.printStackTrace();
}finally{try{if (dis != null)
dis.close();if (dos != null)
dos.close();if (s != null) {
s.close();
}
}catch(IOException e1) {
e1.printStackTrace();
}
}
}
}
}