📄 clienter.java
字号:
/**
* 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 + -