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

📄 clienter.java

📁 用java实现的一个bbs的portal
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: Jul 19, 2003
 * Time: 2:17:08 PM
 * To change this template use Options | File Templates.
 */
package ConnectAdapter;

import Classification.ClassifyConfig;
import Kernel.*;
import Mail.MailBean;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.Vector;

import BBSSpider.BBSTester;

public class Clienter extends Thread{

    private Socket socket;
    private String ClientID;
    //private ClientOutput clientOutput;
    PrintWriter out;
    private BufferedReader in;
    private  String remoteAdd;
    private String loginTime;

    public String USERID = null;
    private boolean isRunning = true;

    Vector  InfoVec = new Vector();
    int InfoNum = 0;
    //boolean TradeOrBBS;

    Vector  collectionVec = new Vector();
    int collectionNum = 0;

    private short activeState = 5; //notice

    SimpleDateFormat myFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SS");

    UserAttention userAttention = null;
    TradeInfo tradeInfo = new TradeInfo();
    UserCollection userCollection = new UserCollection();
    UserInfo userInfo = new UserInfo();

    public Clienter(Socket socket){
        this.socket = socket;
        try{
            out = new PrintWriter(socket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        }catch(Exception ex){
            ex.printStackTrace();
        }
        ClientID = createClientID(socket);
        System.out.println(ClientID);
        remoteAdd = socket.getRemoteSocketAddress().toString();
        /*
        if (out != null) {
            clientOutput = new ClientOutput(out);
            clientOutput.start();
        }
        else {
            System.err.println("Client Output Error!");
        }
        */
    }

    private String createClientID(Socket socket){
        SimpleDateFormat tf = new SimpleDateFormat("yyyyMMddHHmmssSS");
        String loginTime = tf.format(new Date());
        String address = socket.getRemoteSocketAddress().toString();
        return address+"_"+loginTime;
    }

    public void run(){
        try{
            while (isRunning){
                String inputLine = in.readLine();
                if (inputLine == null)
                    isRunning = false;
                else {
                    System.out.println("Input Message : "+inputLine);
                    handleMessage(inputLine);
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            comTool.ServerAdapterLog.error("User "+USERID+" Logout with Exception !");
            connectionClose();
        }
    }
    public static Vector sliceMessage(String message,String token){
        Vector tmpVec = new Vector();
        int index =-1;
        String tmpStr;
        while ((message != null) && (message != "")){
            tmpStr = null;
            index = message.indexOf(token);
            if (index >=0){
                tmpStr = message.substring(0,index);
                message = message.substring(index+1);
            }else {
                tmpStr = message;
                message = "";
            }

//            if (tmpStr.equals("")) {
//                tmpStr = null;
//            }
            tmpVec.add(tmpStr);
        }
        return tmpVec;
    }
    private void handleMessage(String message){
        /** 
         * yangj comment some words here
         *  need to contact with wanglei
         **/
        /**
         Vector mesVec = new Vector();
        StringTokenizer st = new StringTokenizer(message,"%");
        while (st.hasMoreTokens()){
            mesVec.add(st.nextToken());
        }
         **/
        System.out.println("MESSAGE : "+message);
        Vector mesVec = sliceMessage(message, "%");
        String messageType = (String)mesVec.get(0);

        if (messageType.equals("REGISTER")){
            //REGISTER%ID%PASSWORD%CITY%ADDRESS%TELEPHONE%MOBILE%EMAIL
            userInfo = new UserInfo((String)mesVec.get(1),(String)mesVec.get(2),(String)mesVec.get(3)
                    ,(String)mesVec.get(4),(String)mesVec.get(5),(String)mesVec.get(6),(String)mesVec.get(7),
                    "0",(new Date()).toString(),(new Date()).toString());
            if (userInfo.insertUserInfo()){
                comTool.ServerAdapterLog.info("User "+(String)mesVec.get(1)+" Register Success !");
                sendMessage("REGSUCC","");
            }else{
                comTool.ServerAdapterLog.info("User "+(String)mesVec.get(1)+" Register Fail !");
                sendMessage("REGFAIL","");
            }
        }
        if (messageType.equals("LOGIN")){
            String id = (String)mesVec.get(1);
            String password = (String)mesVec.get(2);
            if (userInfo.login(id,password)){
                // login success
                loginTime = myFormat.format((new Date()));
                this.USERID = id;
                userAttention = new UserAttention(USERID,this);
                userAttention.start();
                comTool.ServerAdapterLog.info("User "+USERID+" Login Success !");
                userInfo.addVisitTimes(USERID);
                userInfo.updateLastVisit(USERID,(new Date()).toString());
                ServerAdapter.onlineUser.add(USERID+" "+remoteAdd+" "+loginTime);
                ServerAdapter.serverUI.onlineList.setListData(ServerAdapter.onlineUser);
                sendMessage("LOGSUCC","");
                sendMessage("USERINFO","");
            }else{
                // login fail
                comTool.ServerAdapterLog.info("User "+id+" Login Fail !");
                sendMessage("LOGFAIL","");
            }
        }
        if (messageType.equals("WANTATTENTIONLIST")){
            sendMessage("INITATTENTIONLIST","");
        }
        /*
        if (messageType.equals("WANTCOLLECTIONINDEX")){
        sendMessage("COLLECTIONINDEX","");
        }
        */
        if (messageType.equals("LOGOUT")){
            //
            comTool.ServerAdapterLog.info("User "+USERID+" Logout !");
            connectionClose();
        }
        if (messageType.equals("QUIT")){
            connectionClose();
        }
        if (messageType.equals("TRADEINFO")){
            //TRADEINFO%TRADETYPE%KIND%COMMODITYNAME% KEYWORD1|KEYWORD2|KEYWORD3
            String tradetype = (String)mesVec.get(1);
            String kind = (String)mesVec.get(2);
            String commodity = (String)mesVec.get(3);
            String keywords = (String)mesVec.get(4);
            
            InfoVec = tradeInfo.getTradeInfo(tradetype,kind,commodity,keywords);
            if (InfoVec.size()>0){
                String tradeinfo = (String)InfoVec.get(InfoNum);
                //System.out.println(tradeinfo);
                sendMessage("TRADEINFO",tradeinfo);
                InfoNum = 1;
            }else{
                sendMessage("INFOEND","");
                InfoNum = 0;
            }
        }
        if (messageType.equals("NEXT")){
            if (InfoNum<InfoVec.size()){
                String tradeinfo = (String)InfoVec.get(InfoNum);
                //System.out.println(tradeinfo);
                sendMessage("TRADEINFO",tradeinfo);
                InfoNum++;
            }else{
                sendMessage("INFOEND","");
                comTool.ServerAdapterLog.error(this.USERID+" "+InfoNum);
                InfoNum = 0;
            }
        }
        /*
        if (messageType.equals("BBSINFO")){
            String keyword = (String)mesVec.get(2);
            InfoVec = tradeInfo.getBBSInfo(keyword);
            if (InfoVec.size()>0){
                String tradeinfo = (String)InfoVec.get(InfoNum);
                //System.out.println(tradeinfo);
                sendMessage("BBSINFO",tradeinfo);
                TradeOrBBS = false;
                InfoNum = 1;
            }else{
                sendMessage("INFOEND","");
                InfoNum = 0;
            }
        }
        */

        if (messageType.equals("GETCOLLECTION")){
            collectionVec = userCollection.getMyCollection(this.USERID);
            if (collectionVec.size()>0){
                String collectionInfo = (String)collectionVec.get(collectionNum);

⌨️ 快捷键说明

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