⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java

📁 chat room
💻 JAVA
字号:
package Server;
import java.util.*;

import ShareData.Message;


public class Server implements IServer{

	private List<RemoteClient> rcList=new ArrayList<RemoteClient>();
	private ClientAccepter ca;
	private ServerGUI sgui;
	private ConnectedMemberUpdater cmu;
	
	public String getClientList(){
		String list="";
		for(RemoteClient rc:rcList){
			list+=rc.getName()+",";
		}
		if(list.length()==0)
			return list;
		else
			return list.substring(0, list.length()-1);
		
	}
	
	synchronized public void sendToOne(Message m,RemoteClient rc){
		rc.sendToClient(m);
	}
	
	synchronized public void sendToAll(Message m){
		for(RemoteClient rc:rcList){
			sendToOne(m,rc);
		}
		if("conversation".equalsIgnoreCase(m.getType()))
			sgui.updateShowMessage(m.getContent());
		else if("list".equalsIgnoreCase(m.getType())){
			Object[] l=m.getContent().split(",");
			sgui.updateClientList(l);
		}
		else if("name".equalsIgnoreCase(m.getType())){
			sgui.updateShowMessage(m.getContent());
			Message mm=new Message("list",getClientList());
			sendToAll(mm);
		}
		else
			sgui.updateShowMessage(m.getType()+" : "+m.getContent());
			
	}
	
	public void addRemoteClient(RemoteClient rc){
		rcList.add(rc);
		String s="New Client: "+rc.getName()+" join to the chatroom!";
		sgui.updateShowMessage(s);
		sendToAll(new Message("Notice",s));
		
		Message m=new Message("list",getClientList());
		sendToAll(m);
		
	}
	
	public void removeRemoteClient(RemoteClient rc){
		String s="Client: "+rc.getName()+" leave the chatroom!";
		sgui.updateShowMessage(s);
		sendToAll(new Message("Notice",s));
		
		rc.disconnect();
		rcList.remove(rc);
		
		
		Message m=new Message("list",getClientList());
		sendToAll(m);
	}
	
	public Server(){
		this(9999,(long)6);
	}
	
	public Server(int p,long n){
		sgui=new ServerGUI(this);
		ca=new ClientAccepter(p,this);
//		cmu=new ConnectedMemberUpdater(n,this);
	}
	
	public void start(){
		
		Thread tAccept=new Thread(ca);		
		tAccept.start();		
		
		Thread tConnect=new Thread(cmu);
		tConnect.start();
	}

	@Override
	public void close() {
		// TODO Auto-generated method stub
		Message m=new Message("close","Server is going to closed");
//		cmu.setConn(false);
		this.sendToAll(m);
		ca.serverClose();
	}

	public static void main(String[] argc){
		new Server();
	}

	@Override
	public RemoteClient getRemoteClientbyName(String s) {
		// TODO Auto-generated method stub
		for(RemoteClient rc:rcList){
			if(s.equals(rc.getName()))
				return rc;
		}
		return null;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -