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

📄 chatserverimpl.java

📁 一阶微分算法
💻 JAVA
字号:
//ChatServerImpl.java
package chatserver;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
import chat.ChatServer;
import chat.Chatter;
public class ChatServerImpl
extends java.rmi,server.UnicastRemoteObject
implements ChatServer{
static ChatServerImpl server=null;
private final static String BINDAME="ChatServer";
private final static String String[] STATEMSG=
new String[]{ "服务器启动","服务器停止"};
list chatters=new ArrayList();
list listeners=new ArrayList();
protected ChatServerImpl() throws java.rmi.RemoteException{
}
public static ChatServerImpl getInstance(){
try{
if(server==null)
server=new ChatServerImpl();
}
catch(RemoteException e){
e.printStackTrace();
return null;
}
return server;
}
public void start() throws RemoteException,MalformedURLException{
java.rmi.Naming.rebind(BINDNAME,server);
notifyListener(STATEMSG[0]);
}
public void stop()
throws RemoteException,NotBoundException,MalformedURLException{
notifyListener(STATEMSG[1]);
Iteratoe itr=chatters.iterator();
while(itr.hasNext()){
UserInfo u=(UserInfo)itr.next();
u.getChatter().serverStop();
}
java.rmi.Naming.unbind(BINDNAME);
}
//添加一个侦听者
public void addListener(ChatServerListener listener){
listeners.add(listener);
}
//移除一个侦听者
public notifyListener(String msg){
Iterator itr=listeners.iterator();
ChatServerEvent evt=new ChatServerEvent(this,msg);
while(itr.hasNext()){
((ChatServerListener)itr.next()).serverEvent(evt);
}
}
public void login(String name,Chatter c)throws java.rmi.RemoteException{
if(c!=null&&name!=null){
UserInfo u=new UserInfo(name,c);
notifyListener(u.getName()+"进入聊天室");
Iterator itr=chatters.iterator();
while (itr.hasNext()){
UserInfo u2=(UserInfo)itr.next();
u2.getChatter().receiveEnter(name,c,false);
c.receiveEnter(u2.getName(),u2.getChatter(),true);

}
chatters.add(u);
}
}
public void logout(String name)throws java.rmi.RemoteException{
if(name==null){
System.out.println("null name on logout:cannot remove chatter");
return;
}
UserInfo u_gone=null;
Iterator itr=null;
synchronized(chatters){
for(int i=0;i<chatters.size();i++){
UserInfo u=(UserInfo)chatters.get(i);
if(u.getName().equals(name)){
notifyListener(name+"离开聊天室");
u_gone=u;
chatters.remove(i);
itr =chatters.iterator();
break;
}
}
}
if(u_gone==null||itr==null){
System.out.println(
"no user by name of"+name+"found:not removing chatter");
return;
}
while(itr.hasNext()){
UserInfo u=(UserInfo)itr.next();
u.getChatter().receiveExit(name);
}
}
public void chat(String name,String message)
throws java.rmi.RemoteException{
Iterator itr=chatters.iterator();
while(itr.hasNext()){
UserInfo u=(UserInfo)itr.next();
if(!name.equals(u.getName()))
u.getChatter().receiveChat(name,message);
}
notifyListener(name+":"+message);
}
}

⌨️ 快捷键说明

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