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

📄 serverprocess.java

📁 本工程模拟网上社区,其中包括银行,软件销售公司,软件投资公司,茶餐馆,和多个服务器.
💻 JAVA
字号:
package server;

import java.io.*;
import java.net.*;
import java.sql.*;
import javax.swing.*;
import java.lang.String;
import java.sql.Connection;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;

public class ServerProcess extends Thread{
    private Socket socket;
    private Server frameserver;
    private Connection connection=null;
    private PreparedStatement statement=null;  
    private BufferedReader in;
    private PrintWriter  out;
    private String command="";
    private String account;
    public  boolean shutdown;              //关线程标记
    public int flag=1;
    public ServerProcess(Socket socket_,Server frameserver_,BufferedReader in_,PrintWriter out_) {
        try{
               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
               connection=DriverManager.getConnection("jdbc:odbc:Account");    
        }
        catch(Exception e)
        {
            System.out.println("ServerProcess initial"+e.toString());
        }
        socket=socket_;
        frameserver=frameserver_; 
        shutdown=false;
        in=in_;
        out=out_;
    } 
//处理服务程序的主体
    public void run()             
    {   
        try{
            while(!shutdown)
            { 
                command=in.readLine();
                StringTokenizer st = new StringTokenizer(command,"/");         //命令解析
                String cmd=st.nextToken();
//处理用户退出
                if(cmd.equals("exit"))    //退出
                {      
                    Exit(command);
                }
//登陆处理
                if(cmd.equals("login"))    //登陆
                {
                    Login(command);
                } 
//留言处理           
                if(cmd.equals("chat"))              
                {
                    Chat(command);
                }
//刷新在线用户           
                if(cmd.equals("update"))               
                {
                    Update();
                }
//处理茶餐馆
                if(cmd.equals("restaurant"))
                {
                    frameserver.AddAction("用户"+account+"进入茶餐馆客户端");
                }
 //处理投资公司
                if(cmd.equals("invest"))
                {
                    EnterInvest(command);
                }
//处理软件公司
                if(cmd.equals("soft"))
                {
                    EnterSoft(command);
                }
//处理银行
                if(cmd.equals("bank"))
                {
                    EnterBank(command);
                }
//用户处理注册
                if(cmd.equals("register"))
                {
                    String temp=st.nextToken();
                    if(temp.equals("cancel"))
                    {
                        out.println("register/cancel");
                        out.flush();
                        frameserver.AddAction("用户取消了注册");
                    }
                    else
                    {
                        frameserver.AddAction("新用户开始注册");
                        Register(command);
                    }
                }
                if(cmd.equals("bankexit"))
                {
                   frameserver.SetBankLogin(false); 
                   frameserver.AddAction("银行服务器退出");                   
                }
            }
        }
        catch(Exception e)
        {
            System.out.println("客户断开连接");
            Exit("exit/"+account);
        }
//断开与用户的连接,结束线程
        try{
            in.close();
            out.close(); 
            connection.close();
        }
        catch(Exception e)
        {
            System.out.println("ServerProcess runend"+e.toString());
        }       
    }

     
////////////////////////////////////////////////////////////////    
//处理注册
    public synchronized boolean Register(String command_)
    {
        StringTokenizer st=new StringTokenizer(command_,"/");
        st.nextToken();
        String account=st.nextToken();    
        String name=st.nextToken();
        String code=st.nextToken();
        String sort=st.nextToken();
        try{
            String sql="select* from Account";
            statement=connection.prepareStatement(sql);
            ResultSet result=statement.executeQuery();
            while(result.next())
            {
                String a=result.getString("帐号");
                if(account.equals(a))
                {  
                    out.println("register/failure");
                    out.flush();                       
                    result=null;
                    statement.close(); 
                    frameserver.AddAction("帐号已存在,新用户注册失败");
                    return false;
                }
            }
        }
        catch(Exception e)
        {
            System.out.println("Register"+e.toString());
         } 
         try{    
             String sql_="insert into Account(帐号,密码,名称,类别)values('";
             sql_+=account+"','";
             sql_+=code+"','";
             sql_+=name+"','";
             sql_+=sort+"')";
             statement=connection.prepareStatement(sql_);
             statement.executeUpdate();               
             out.println("register/success");
             out.flush();
             statement.close();  
            }
        catch(Exception e)
        {
            System.out.println("ServerProcess Register"+e.toString());
         } 
        frameserver.AddAction("新用户注册成功");
        return true;
    }
 /////////////////////////////////////////////////////////////////////////
//处理用户登陆
    public void Login(String command_)
    {
        StringTokenizer st = new StringTokenizer(command_,"/");         
        st.nextToken();        
        String temp=st.nextToken();
        if(temp.equals("cancel"))
        {
            out.println("login cancel/success");       //取消登陆    
            out.flush(); 
            frameserver.AddAction("用户取消登陆");
            shutdown=true;       //服务器关闭相应处理线程
        }
        else if(temp.equals("register"))
        {
            out.println("login/register");     
            out.flush();             
        }
        else
        {                
            InetAddress inet=socket.getInetAddress();
            frameserver.AddAction("用户尝试登陆,IP:"+inet.getHostAddress());
            ClientLogin clientlogin=new ClientLogin(command,frameserver,socket);
            String str=clientlogin.Validate();
            if(str.equals("success"))
            {
                out.println("login/success");       //登陆成功     
                out.flush();                 
                account=temp;                
            }
            else if(str.equals("failure"))
            {
                out.println("login/failure");
                out.flush();                    
                frameserver.AddAction("用户登陆失败");                      
            }      
            else if(str.equals("already"))
            {
                out.println("login/already");
                out.flush();
                frameserver.AddAction("用户已登陆");                     
            }
        }        
    }   
//////////////////////////////////////////////////////////////////////////
//处理用户留言  
    public void Chat(String command_)
    {
        StringTokenizer st = new StringTokenizer(command_,"/");         
        st.nextToken();
        String inwords=st.nextToken();
        frameserver.AddWords(inwords);
        String outwords="chat";
        for(int i=0;i<frameserver.NumWords();i++)
        {
            outwords+=("/"+frameserver.GetWords(i));
        }
        out.println(outwords);
        out.flush();
    }
///////////////////////////////////////////////////////////////////////////////
    //处理在线用户更新
    public void Update()
    {
        int count=frameserver.vector.size();
        String s="update";
        for(int i=0;i<count;i++)
        {  
            ClientInfo clientinfo=(ClientInfo)frameserver.vector.get(i);
            s+=("/"+clientinfo.ReturnAccount());
        }  
        out.println(s);
        out.flush();
    }
 ///////////////////////////////////////////////////////
    public void Exit(String command_)
    {   
        ClientExit clientexit=new ClientExit(command_,frameserver);
        clientexit.Exit();
        out.println("exit/success");
        out.flush();
        try{
            in.close();
            out.close(); 
            socket.close();              
        }
        catch(Exception e)
        {
            System.out.println("ServerProcess Exit"+e.toString());
        } 
        
        StringTokenizer st = new StringTokenizer(command_,"/");         
        st.nextToken();
        String account=st.nextToken();
        if(account.equals("bank"))
        {
            frameserver.SetBankLogin(false);
        }
        if(account.equals("software"))
        {
            frameserver.SetSoftLogin(false);
        }
        if(account.equals("invest"))
        {
            frameserver.SetInvestLogin(false);
        }
        shutdown=true;            
    }
  /////////////////////////////////////////////////////
 //处理软件公司
    public void EnterSoft(String command_)
    {
        StringTokenizer st = new StringTokenizer(command_,"/");         
        st.nextToken();
        String cs=st.nextToken();
        String account=st.nextToken();   
        if(cs.equals("client"))
        {
            if(frameserver.IfSoftLogin())
            { 
                out.println("soft/client/success/"+frameserver.SoftwareIP);
                out.flush();       
                frameserver.AddAction("用户"+account+"进入软件公司客户端");
            }    
            else
            {
                out.println("soft/client/failure");          
                out.flush();          
                frameserver.AddAction("用户"+account+"无法连接到软件公司的客户端,进入失败"); 
            }  
        }
        else
        {
            if(frameserver.IfSoftLogin())
            {
                out.println("soft/server/already");
                out.flush();  
                frameserver.AddAction("软件公司服务器已经开启,再开启失败"); 
            }
            else
            {
                boolean b_=true;
                frameserver.SetSoftLogin(b_);
                out.println("soft/server/success");
                out.flush();
                frameserver.AddAction("软件公司服务器开启");     
            }
        }
    }
 //////////////////////////////////////////////////////
// 处理投资公司
    public void  EnterInvest(String command_)
    {
        StringTokenizer st = new StringTokenizer(command_,"/");         
        st.nextToken();
        String cs=st.nextToken();
        String account=st.nextToken();   
        if(cs.equals("client"))
        {
            if(frameserver.IfInvestLogin())
            { 
                out.println("invest/client/success/"+frameserver.InvestIP);
                out.flush();       
                frameserver.AddAction("用户"+account+"进入投资公司客户端");
            }    
            else
            {
                out.println("invest/client/failure");          
                out.flush();          
                frameserver.AddAction("用户"+account+"无法连接到投资公司的客户端,进入失败"); 
            }  
        }
        else
        {
            if(frameserver.IfInvestLogin())
            {
                out.println("invest/server/already");
                out.flush();  
                frameserver.AddAction("投资公司服务器已经开启,再开启失败");      
            }
            else
            {
                boolean b_=true;
                frameserver.SetInvestLogin(b_);
                out.println("invest/server/success");
                out.flush();
                frameserver.AddAction("投资公司服务器开启"); 
            }
            
        }
    } 
/////////////////////////////////////////////////////////////////////////////////    
 //处理银行
    public void EnterBank(String command_)
    {
        StringTokenizer st = new StringTokenizer(command_,"/");         
        st.nextToken();
        String cs=st.nextToken();
        String account=st.nextToken();   
        if(cs.equals("client"))
        {
            if(frameserver.IfBankLogin())
            {                 
                out.println("bank/client/success/"+frameserver.BankIP);
                out.flush();       
                frameserver.AddAction("用户"+account+"进入中国银行");
            }    
            else
            {
                out.println("bank/client/failure");          
                out.flush(); 
                frameserver.AddAction("用户"+account+"无法连接到银行的客户端,进入失败");                 
            }  
        }
        else
        {
            if(frameserver.IfBankLogin())
            {
                out.println("bank/server/already");
                out.flush();  
                frameserver.AddAction("银行服务器已经开启,再开启失败");                       
            }
            else
            {
                boolean b_=true;
                frameserver.SetBankLogin(b_);            
                out.println("bank/server/success");
                out.flush();
                frameserver.AddAction("银行服务器开启"); 
            }            
        }
    }       
}

⌨️ 快捷键说明

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