📄 server.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 + -