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

📄 serverframe.java

📁 Java 聊天程序 有客户端和服务端。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        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 + -