📄 server.java
字号:
package serverwork;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
import database.userservice;
public class Server implements Runnable{
private ServerSocket sersocket;
private int port=8000; //服务器在8000端口等待
public ServerUserManager sum;
public ServerThread ser;
public serverGUI servergui;
public userservice dataservice;
private Vector onlinevector;
private Vector downlinevector;
public Vector group11;
public Vector group22;
private Map<String,String> onlineUser = null;
private Map<String,String> downlineUser = null;
private Map<String,String> group1 = null;
private Map<String,String> group2 = null;
public Server(){
onlineUser = new HashMap<String,String>(); //用户存放在线用户用户名和当前的用户对象对应
downlineUser = new HashMap<String,String>(); //存入下线用户的用户名
group1 = new HashMap<String,String>();
group2 = new HashMap<String,String>();
onlinevector = new Vector();
downlinevector = new Vector();
group11 = new Vector();
group22 = new Vector();
dataservice = new userservice();
Initdatabase(); //服务器开启时读取数据库中的数据
servergui = new serverGUI(this); //产生服务器端的图形界面
try {
sersocket = new ServerSocket(port); //建立登陆的socket
} catch (IOException e) {
e.printStackTrace();
}
sum = new ServerUserManager(this); //建立server的用户管理对象
new Thread(this).start(); // //开启自身的等待线程
sum.start(); //开始服务器的管理线程
}
public void run() {
boolean done = false;
while(!done){
try{
System.out.println("等待用户登入");
Socket clientSock = sersocket.accept(); //等待用户的登陆到系统中来
System.out.println("有用户登入");
ser = new ServerThread(clientSock, this); //开启一个处理当前用户业务的线程
ser.start();
} catch(IOException ex){
try { //等待用户登录失败
sersocket.close();
} catch (IOException e) {
e.printStackTrace();
}
done = true;
}
}
}
public static void main(String args[]) {
new Server();
System.out.println("服务器已开启");
}
private void Initdatabase(){ //将数据库中的成员恢复到服务器中的方法实现
String[] downlineuse = dataservice.getalluser();
for(int i = 0; i < downlineuse.length; i++){
System.out.println("服务器初始化:"+downlineuse[i]);
downlineUser.put(downlineuse[i],"");
downlinevector.add(downlineuse[i]);
String[] groups = dataservice.getallgroups(downlineuse[i]);
if(!groups.equals("")){
for(int j = 0; j < groups.length; j++){
if(groups[j].equals("1111")){
group1.put(downlineuse[i],"1");
group11.add(downlineuse[i]);
}else if(groups[j].equals("2222")){
group2.put(downlineuse[i],"1");
group22.add(downlineuse[i]);
}
}
}
}
}
public void addonlineuser(String username,String address){ //添加上线用户
onlineUser.put(username, address);
onlinevector.add(username);
downlineUser.remove(username);
downlinevector.remove(username);
}
public void adddownlineuser(String username){ //处理下线用户
downlineUser.put(username,"");
downlinevector.add(username);
onlineUser.remove(username);
onlinevector.remove(username);
}
public Map<String,String> getonlineuser(){ //获得系统当前的在线用户
return onlineUser;
}
public Map<String,String>getgroup1(){
return group1;
}
public Map<String,String>getgroup2(){
return group2;
}
public Map<String,String> getdownlinuser(){ //获取系统当前的不在线用户
return downlineUser;
}
public Vector getvectoronline(){
return onlinevector; }
public Vector getvectordownline(){
return downlinevector;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -