📄 public.java
字号:
package com.zlf.qqserver;
import java.awt.Font;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
import com.zlf.dao.DaoFactory;
import com.zlf.dao.UserDao;
import com.zlf.qq.pub.DataPacket;
import com.zlf.qqserver.servermngpanel.toppanel.*;
public class Public {
public static boolean stop = false;// 控制线程的终止
public static boolean bind = false;// 绑定标志
public static ServerSocket serverSocket = null;
public static Hashtable mySocketInfo = new Hashtable();// 保存客户端上线用户的线程,socket,输入输出流
private static UserDao userDao=DaoFactory.newInstance().createUserDao();
public static void setGlobalFont(String font) {
// 设置字体名称,样式,大小
Font fontRes = new Font(font, Font.PLAIN, 12);
for (Enumeration keys = UIManager.getDefaults().keys();keys.hasMoreElements();) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
UIManager.put(key, new FontUIResource(fontRes));
}
}
}
//服务器关闭方法
public static void serverClose(){
TopPanel tp = new TopPanel();
tp.writeLog();
// 关闭服务,发包到所有客户端,告诉服务器已关闭
HashMap tempData = new HashMap();
tempData.put("data", new String("服务器已关闭,程序将自动退出!"));
DataPacket serverClosePacket = new DataPacket(
DataPacket.server_close_type, DataPacket.Server_Id,
"", tempData);
// 找到所有用户端的输出流,发送包到客户端
Set set = (Set) Public.mySocketInfo.keySet();
Iterator iter = set.iterator();
String[] QQ_id = new String[set.size()];
//System.out.println(set.size());
int i = 0;
while (iter.hasNext()) {
QQ_id[i] = (String) iter.next();
//System.out.println(QQ_id[i]);
ArrayList a = (ArrayList) Public.mySocketInfo
.get(QQ_id[i]);
ObjectOutputStream tempOos = (ObjectOutputStream) a
.get(2);// 取出list里的输出流
try {
// 发送服务关闭包
tempOos.writeObject(serverClosePacket);
tempOos.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
//将用户在线标志改为0
userDao.updateOnLine(0, QQ_id[i]);
System.out.println("update");
i++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -