packagechat;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.OutputStreamWriter;importjava.io.PrintWriter;importjava.net.InetAddress;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;importjava.util.List;/***
* 运行在服务端的SeverSocket主要负责;
* 1 向系统申请服务端口号客户端是通过这个端口号与之连接的
* 2 监听申请的服务端口号,当一个客户端通过该端口号尝试建立联系连接时,
* SeverSocket会在服务端创建一个Socket与客户端建立连接
* 服务端正对不同客户端建立多个Socket
*
*@authorKwinWei QQ:885251358
**/
public classServer {publicServerSocket server;/** 用来保存客户端输出流的集合,
*因为线程安全的也不和遍历互斥,要自己维护也可以保证安全*/
private List allOut; //私聊可以用map,key为昵称,value是对应消息,广播则遍历value
/**初始化 服务端*/
public Server()throwsException {/** 初始化的同时申请端口号*/server= new ServerSocket(8788);