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

📄 qq_server.java~199~

📁 是一个关于JQQ小程序
💻 JAVA~199~
字号:
package jqq_server;


import javax.swing.JFrame;
import javax.swing.JTextArea;
import java.awt.*;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Timer;
import java.util.Date;
import java.sql.*;
import Seri.Customer;
import Seri.userList;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
//登录信息
/*class Customer implements Serializable
{
    String custName;
    String custPassword;
}*/
//注册信息
class Register_Customer implements Serializable
{
    String custName;
    String custPassword;
    String sex;
    String email;
}
//用于发送聊天和在线用户的信息
class Message implements Serializable
{
        Vector userOnLine;
        Vector chat;
}
public class qq_server extends JFrame implements Runnable{
    JTextArea jtaMessageList = new JTextArea();
    JLabel lMessage = new JLabel();
    JTextArea jtaUserList = new JTextArea();
    JLabel lUser = new JLabel();
    JLabel lPort = new JLabel();
    JTextField jtfPort = new JTextField();
    JButton jbStart = new JButton();
    JButton jbStop = new JButton();
    JButton jbExit = new JButton();
    Component component1 = Box.createHorizontalStrut(8);


    ServerSocket server= null;
    static Socket client = null;
    static Vector u=new Vector(1,1);
    static Vector v=new Vector(1,1);
    Thread tStart;
    Timer timer;

    static int threadFlag=0;
    public qq_server() {
        try {
             jbInit();
             timer = new Timer();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        this.getContentPane().setLayout(null);
        lMessage.setFont(new java.awt.Font("Dialog", Font.BOLD, 16));
        lMessage.setText("消息列表");
        lMessage.setBounds(new Rectangle(144, 9, 79, 21));
        jtaMessageList.setToolTipText("");
        jtaMessageList.setText("欢迎来到聊天室服务器"+"\n");
        jtaMessageList.setBounds(new Rectangle(142, 45, 115, 228));
        lUser.setFont(new java.awt.Font("Dialog", Font.BOLD, 16));
        lUser.setText("用户列表");
        lUser.setBounds(new Rectangle(20, 9, 79, 21));
        jtaUserList.setText("");
        jtaUserList.setBounds(new Rectangle(16, 45, 115, 228));
        lPort.setFont(new java.awt.Font("Dialog", Font.BOLD, 16));
        lPort.setText("端口设置");
        lPort.setBounds(new Rectangle(277, 22, 79, 21));
        jtfPort.setText("9000");
        jtfPort.setBounds(new Rectangle(273, 66, 91, 23));
        jbStart.setBounds(new Rectangle(273, 130, 100, 30));
        jbStart.setText("启动服务器");
        jbStart.addActionListener(new qq_server_jbStart_actionAdapter(this));
        jbStop.setBounds(new Rectangle(273, 185, 100, 30));
        jbStop.setMnemonic('0');
        jbStop.setText("停止服务器");
        jbStop.addActionListener(new qq_server_jbStop_actionAdapter(this));
        jbStop.setEnabled(false);
        jbExit.setBounds(new Rectangle(273, 240, 100, 30));
        jbExit.setMnemonic('0');
        jbExit.setText("关闭服务器");
        jbExit.addActionListener(new qq_server_jbExit_actionAdapter(this));
        component1.setBounds(new Rectangle(268, 112, 91, 1));
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        jbStop.addActionListener(new qq_server_jbStop_actionAdapter(this));
        this.getContentPane().add(jtaUserList);
        this.getContentPane().add(lUser);
        this.getContentPane().add(jtaMessageList);
        this.getContentPane().add(lMessage);
        this.getContentPane().add(jtfPort);
        this.getContentPane().add(jbStart);
        this.getContentPane().add(jbExit);
        this.getContentPane().add(lPort);
        this.getContentPane().add(jbStop);
        this.getContentPane().add(component1);

    }


     public static void main(String args[]) {
         qq_server serv = new qq_server();
         serv.setLocation(350,250);
         serv.setSize(400,320);
         serv.show();
     }

    public void jbStart_actionPerformed(ActionEvent e) {
        try{
            server=new ServerSocket(Integer .parseInt(jtfPort.getText()));
            this.jtaMessageList.append("服务器启动....."+"\n");
            //刷新计时器
            timer.schedule(new TimerTask() {
            // 执行的方法
            public void run() {
               // System.out.println(new Date().toString());
              jtaUserList.setText("");
              for(int i=0;i<u.size();i++)
              {
                  jtaUserList.append((String)u.elementAt(i)+"\n");
              }
            }

        }, 0, 1000);

            tStart = new Thread(this);
            tStart.start();
            }
        catch(Exception ex) {
            System.out.println("can not listen to:"+e);
            //出错,打印出错信息
            }
        this.jbStart.setEnabled(false);
        this.jbStop.setEnabled(true);
    }

    public void run()
    {
        try
        {
            while(true)
            {
                    //监听并接受客户的请求
                    client = server.accept();
                    Connection con = new Connection(client,u,v);   //支持多线程
                    //login();
                   // Thread.sleep(50) ;

              }
          }
          catch(Exception exx)
          {
              System.out.println("监听出错拉!"+exx);
           }
   }

    public void jbStop_actionPerformed(ActionEvent e) {
        try {
            //threadFlag = 1;
            tStart.stop();
           // System.out.println("1111拉!");
            server.close();
            this.jtaMessageList.append("服务器停止!!"+"\n");
        }
        catch(Exception eStop)
        {
            System.out.println("停止出错拉!"+eStop);
        }
        timer.cancel();
        this.jbStart.setEnabled(true);
    }

    public void jbExit_actionPerformed(ActionEvent e) {
        try{
            this.tStart.stop();
            server.close();
            this.dispose();
        }
        catch(Exception eExit)
        {
            System.out.println("退出出错拉!"+eExit);
        }
        timer.cancel();
    }
}

class qq_server_jbStart_actionAdapter implements ActionListener {
    private qq_server adaptee;
    qq_server_jbStart_actionAdapter(qq_server adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jbStart_actionPerformed(e);
    }
}

class qq_server_jbExit_actionAdapter implements ActionListener {
    private qq_server adaptee;
    qq_server_jbExit_actionAdapter(qq_server adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jbExit_actionPerformed(e);
    }
}


class qq_server_jbStop_actionAdapter implements ActionListener {
    private qq_server adaptee;
    qq_server_jbStop_actionAdapter(qq_server adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {

        adaptee.jbStop_actionPerformed(e);
    }
}


class Connection extends Thread
{
        protected Socket netClient = null;

        Vector userOnline;
        Vector userChat;

        protected ObjectInputStream fromClient;  //从客户到服务器
       // protected PrintStream toClient; //传到客户端
       protected ObjectOutputStream toClient;
        static Vector  vList = new Vector();

        Object obj;

        public Connection(Socket client1,Vector u,Vector c)
        {
           // System.out.println("类建立!!");
                netClient = client1;
                userOnline=u;
                userChat=c;

                try
                {
                        //发生双向通信
                        //检索客户输入client
                        fromClient = new ObjectInputStream(netClient.getInputStream());
                        //服务器写到客户
                        //toClient = new PrintStream(netClient.getOutputStream());
                        toClient = new ObjectOutputStream(netClient.getOutputStream());
                }
                catch(Exception e)
                {
                    System.out.println("!!!!!!!"+e);
                        try
                        {
                                netClient.close();
                        }
                        catch(IOException e1)
                        {
                                System.out.println("不能建立流"+e1);
                                return;
                        }
                }
                this.start();
        }

        public void run()
        {
         try
        {
            //obj是Object类的对象
            obj = (Object)fromClient.readObject();
            if(obj.getClass().getName().equals("Seri.Customer"))
            {
                serverLogin();
            }
            if(obj.getClass().getName().equals("Seri.userList"))
            {
                    //serverRegiste();
                    serverUserList();
            }
            if(obj.getClass().getName().equals("Message"))
            {
                //serverMessage();
            }
            if(obj.getClass().getName().equals("Chat"))
            {
                //serverChat();
            }
            if(obj.getClass().getName().equals("Exit1"))
            {
                //serverExit();
            }
                }
                catch(IOException e)
                {
                        System.out.println("IO错误!!"+e);
                }
                catch(ClassNotFoundException e1)
                {
                        System.out.println("读对象发生错误!"+e1);
                }
                catch(Exception e2)
                {
                        System.out.println("其他错误!"+e2);
                }

              /*  finally
                {
                        try
                        {
                                netClient.close();
                        }
                        catch(IOException e)
                        {
                                System.out.println(e);
                        }
                }*/
        //}
	}

/**********登录处理**********/
public void serverLogin()
{
    try
    {

        Seri.Customer clientMessage2 = (Seri.Customer)obj;
        java.sql.Connection con;
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection("jdbc:odbc:jqq","sa","");
            String str = "select * from login where user_name = ? and user_pass = ?";
            PreparedStatement ps = con.prepareStatement(str);
            ps.setString(1,clientMessage2.custName);
            ps.setString(2,clientMessage2.custPassword);
            ResultSet rs = ps.executeQuery();
            if(rs.next())
            {
                //toClient.println("登录成功");
                toClient.writeObject("登录成功");
                toClient.flush();
                userOnline.add(clientMessage2.custName);
            }
            else
            {
                toClient.writeObject("登录失败");
                toClient.flush();
            }
            rs.close();
            con.close();
            }
            catch(Exception ee)
            {
                 System.out.println("login::"+ee);
            }

            fromClient.close();
    }

        catch(Exception e)
        {
                System.out.println("login2::"+e);
        }
    }//登录处理完成

    void serverUserList()
    {
        Seri.userList users = new userList();
        users.vUserList = qq_server.u;
        //java.sql.Connection con;
        try
        {

            toClient.writeObject(users);
            toClient.flush();
            //toClient.close();
            fromClient.close();
        }
        catch(Exception ee)
        {
            System.out.println("用户信息列表::"+ee);
        }




    }


}


⌨️ 快捷键说明

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