📄 serverframe.java
字号:
stmt = linkData.getStatement();
boolean right = false;
try {
//执行查询
rs = stmt.executeQuery("select * from clients where id='" +
newClient.name + "' and password='" +
newClient.psword + "'");
if (rs.next()) {
//正确返回true
right = true;
}
else {
right = false;
}
}
catch (SQLException ex) {
ex.printStackTrace();
}
//返回验证信息
return right;
}
//时间计时
class TimerTask
extends Thread {
Date date;
Calendar cl;
DateFormat df;
int s, m, temp;
String str;
public TimerTask() {
s = 0;
m = 0;
temp = 0;
}
public void run() {
while (notEnd) {
try {
//用date获取当前时间
date = new Date();
//设置DateFormat
df = DateFormat.getDateTimeInstance();
//一般使用getInstance()来创建Calendar对象
cl = Calendar.getInstance();
//将格式化后并且带有格式的时间数据传给Calendar类
cl.setTime(df.parse(df.format(date)));
}
catch (Exception e) {
e.printStackTrace();
}
temp = (++s) % 60;
if (temp == 0) {
str = Integer.toString(++m) + " : " + Integer.toString(temp);
}
else {
str = Integer.toString(m) + " : " + Integer.toString(temp);
}
try {
Thread.sleep(1000);
}
catch (InterruptedException ex) {
runtime.setText("计时错误");
}
runtime.setText(str);
}
}
}
//进行服务器的初始化 启动服务器
void link_actionPerformed(ActionEvent e) {
if (serverSocket == null) {
try {
//建立服务器 端口5555
serverSocket = new ServerSocket(5555);
jTextArea1.append("系统提示: 聊天服务器" +
" " +
"系统开始启动......\n");
jTextArea1.append("系统服务地址: 聊天服务器 " +
InetAddress.getLocalHost() + "\n");
}
catch (IOException ee) {
jTextArea1.append("系统消息: 聊天服务器"
+ " "
+ "启动服务器出错,可能的原因是"
+ "另一个服务器已经在运行!\n");
}
}
if (serverSocket != null) {
//启动Watch线程
Thread a = new Watch();
a.start();
//设置全局变量notEnd为true
notEnd = true;
//启动计时线程
Thread runtime = new Thread(new TimerTask());
runtime.start();
//系统消息发送框、发送按钮和停止服务器按钮可操作
jTextField2.setEnabled(true);
send.setEnabled(true);
jButton1.setEnabled(true);
jTextArea1.append("系统消息: 聊天服务器" +
" 已经正常启动!\n");
}
//启动按钮不可操作
link.setEnabled(false);
}
//系统消息发送
void send_actionPerformed(ActionEvent e) {
StringBuffer info = new StringBuffer("MSG");
info.append(":" + "BROAD:" + "系统消息" + ":");
info.append(jTextField2.getText());
sendClients(info);
jTextArea1.append("系统消息:" + jTextField2.getText() + "\n");
jTextField2.setText("");
}
//退出系统
void sysexit_actionPerformed(ActionEvent e) {
if (jButton1.isEnabled()) {
JOptionPane.showMessageDialog(null, "请先停止服务器!", "警告",
JOptionPane.WARNING_MESSAGE);
}
else {
System.exit(0);
}
}
//loseAll是ServerFrame的方法,关闭所有的连接信息
public synchronized void closeAll() {
while (clients.size() > 0)
//需要在整个数组中将每一个连接遍历,然后删除信息
{
Client c = (Client) clients.firstElement();
try {
c.socket.close();
}
catch (IOException e) {
jTextArea1.append("系统消息:" +
" 聊天服务器" +
" Error Socke连接问题");
e.printStackTrace();
}
finally {
clients.removeElement(c);
//从clients数组中删除客户
}
}
}
//显示系统时间
public void jLabel11_ancestorAdded(AncestorEvent event) {
//建立线程
Thread we = new Thread(new Runnable() {
public void run() {
while (true) {
//显示方式
SimpleDateFormat t = new SimpleDateFormat(
"yyyy年M月d日 EEE H时m分s秒");
//Date time=new Date();获取时间
jLabel11.setText(t.format(new Date()));
try {
//睡眠1000毫秒
Thread.sleep(1000);
}
catch (InterruptedException e) {
jLabel11.setText("系统时间获取错误");
e.printStackTrace();
}
}
}
});
//Thread启动
we.start();
}
//菜单中的退出系统选项
public void jMenuItem2_actionPerformed(ActionEvent e) {
if (jButton1.isEnabled()) {
JOptionPane.showMessageDialog(null, "请先停止服务器!", "警告",
JOptionPane.WARNING_MESSAGE);
}
else {
System.exit(0);
}
}
//菜单---关于
public void jMenuItem5_actionPerformed(ActionEvent e) {
about abo = new about();
Center.CenterWindow(abo);
abo.setVisible(true);
}
//菜单---用户管理
public void jMenuItem1_actionPerformed(ActionEvent e) {
ClientMange sf = new ClientMange();
Center.CenterWindow(sf);
sf.setVisible(true);
}
//菜单---管理员管理
public void jMenuItem3_actionPerformed(ActionEvent e) {
adma pp = new adma();
Center.CenterWindow(pp);
pp.setVisible(true);
}
//停止服务器键
public void jButton1_actionPerformed(ActionEvent e) {
//设置对话框的按钮
Object[] options = {
"确定", "取消"};
int agr = JOptionPane.showOptionDialog(null,
"退出服务器将使连接此服务器的用户无法使用?\n你确定退出服务器?",
"警告",
JOptionPane.YES_OPTION,
JOptionPane.WARNING_MESSAGE, null,
options, options[0]);
//判断选择
if (agr == 0) {
//向所有用户发送服务器退出消息
sendClients(new StringBuffer("QUIT:"
+ "SERVER"));
//设置全局变量notEnd为false
notEnd = false;
//关闭所有连接
closeAll();
//启动服务器按钮为可操作
link.setEnabled(true);
//停止服务器按钮、发送系统消息栏和发送系统消息按钮不可操作
jButton1.setEnabled(false);
jTextField2.setEnabled(false);
send.setEnabled(false);
//输出服务器状态
jTextArea1.append("系统消息: 聊天服务器" +
" 已经正常停止!\n");
//输出服务器运行时间
jTextArea1.append("系统消息: 聊天服务器" + " 本次运行时间:" +
runtime.getText() + "\n");
}
}
}
class ServerFrame_jButton1_actionAdapter
implements ActionListener {
private ServerFrame adaptee;
ServerFrame_jButton1_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class ServerFrame_jMenuItem3_actionAdapter
implements ActionListener {
private ServerFrame adaptee;
ServerFrame_jMenuItem3_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem3_actionPerformed(e);
}
}
class ServerFrame_jMenuItem1_actionAdapter
implements ActionListener {
private ServerFrame adaptee;
ServerFrame_jMenuItem1_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem1_actionPerformed(e);
}
}
class ServerFrame_jMenuItem5_actionAdapter
implements ActionListener {
private ServerFrame adaptee;
ServerFrame_jMenuItem5_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem5_actionPerformed(e);
}
}
class ServerFrame_jMenuItem2_actionAdapter
implements ActionListener {
private ServerFrame adaptee;
ServerFrame_jMenuItem2_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem2_actionPerformed(e);
}
}
class ServerFrame_jLabel11_ancestorAdapter
implements AncestorListener {
private ServerFrame adaptee;
ServerFrame_jLabel11_ancestorAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void ancestorAdded(AncestorEvent event) {
adaptee.jLabel11_ancestorAdded(event);
}
public void ancestorRemoved(AncestorEvent event) {
}
public void ancestorMoved(AncestorEvent event) {
}
}
class ServerFrame_link_actionAdapter
implements java.awt.event.ActionListener {
ServerFrame adaptee;
ServerFrame_link_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.link_actionPerformed(e);
}
}
class ServerFrame_send_actionAdapter
implements java.awt.event.ActionListener {
ServerFrame adaptee;
ServerFrame_send_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.send_actionPerformed(e);
}
}
class ServerFrame_sysexit_actionAdapter
implements java.awt.event.ActionListener {
ServerFrame adaptee;
ServerFrame_sysexit_actionAdapter(ServerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.sysexit_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -