//肺弊颇老阑 累己窍绰 窃荐
private void makeLogFile(String logMsg) throws Exception {
String date_time, line;
File logFile;
File logDir = null;

date_time = get_date_time("yyyyMMddHH");
//HS_LOG_FILE_PATH = "/usr/local/sls_server/hs_log/   肺弊颇老捞 积己登绰 困摹
logFile = new File(GlobalConstant.HS_LOG_FILE_PATH + date_time + ".log");
logDir = logFile.getParentFile();

if ((logDir != null) && (!logDir.exists())) {
logDir.mkdirs();
}

//System.out.println("MAKE DIRECTORY");
PrintWriter outFile = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile.toString(),true))),true);

date_time = get_date_time("HH:mm");

line = date_time + ":" + logMsg;

outFile.println(line);
outFile.close();
}
//database俊 肺弊扁废阑 insert 矫虐绰 method
private void insertDB() throws Exception {
String sql;
//int dong = Integer.parseInt(apt_dong);
DB = new DB_Layer(GlobalConstant.DB_SERVER,GlobalConstant.DB_PORT,
GlobalConstant.DB_ACCOUNT,GlobalConstant.DB_PASSWORD,GlobalConstant.DB_SID,GlobalConstant.DB_TYPE,GlobalConstant.DB_DRIVER); if (kind == 0 ) {
switch (kind1) {
case 0 :  kindStr_db = "emergency(hard key)";   
  //kindStr_db = new String(("厚惑虐").getBytes("8859_1"), "EUC-KR");   //"厚惑虐";
   break; 
case 1 :  kindStr_db = "gas";     
   break; 
case 2 :  kindStr_db = "fire";     
   break; 
case 3 :  kindStr_db = "thief";     
   break; 
case 4 :  kindStr_db = "moving sense";     
  break; 
case 5 :  kindStr_db = "emergency(wireless)";    
  break; 
case 6 :  kindStr_db = "all cencel";     
  break; 
}

} else if (kind == 1) {
kindStr_db = "CommonGate open";    
}

if (state == 0) {
stateStr_db = "APPEAR";     
} else if (state == 1) {
stateStr_db = "CENCEL";    
} sql = "insert into sl_hs_log (message_kind, state, apt_dong, apt_hosu, current_time, hs_ip_address) values ( '"+ kindStr_db + "', "  +
  "'" + stateStr_db + "', '" + apt_dong + "', '" + apt_hosu + "', to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS'), '" + remotehostip + "')"; DB.query(sql);
DB.run_close();
System.out.println("DB Insert OK");
} private String curr_time(String format) throws Exception {
Calendar cal = Calendar.getInstance(TimeZone.getDefault());
     String DATE_FORMAT = format;
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);
sdf.setTimeZone(TimeZone.getDefault());           return sdf.format(cal.getTime());
}
//逞绢柯 官捞飘 蔼阑 10柳荐 屈怕狼 胶飘傅屈栏肺 函券
private String decStrConvert(byte[] record, int start, int end) throws Exception {
String str = "";
String str1 ="";

for (int i = start; i<=end; i++) {
str1 = Integer.toHexString(record[i] & 0xff);
if (str1.length() <2 ) {
str = str + "0" + str1;
} else {
str += str1;
}
}
str = Integer.toString(Integer.parseInt(str,16));

return str;
}
//矫胶袍狼 矫埃阑 掘绢坷绰 窃荐
private String get_date_time(String format) throws Exception{
SimpleDateFormat formatter;
java.util.Date date;
String date_time;

date      = new java.util.Date();
formatter = new SimpleDateFormat(format);
date_time = formatter.format(date);

return date_time;
}


//逞绢柯 官捞飘客 农扁啊 嘎绰瘤甫 舅酒焊绰 窃荐
private void dump (byte[] record) throws Exception {
int size = record.length;
for (int a = 0 ; a < size ; a++) {
System.out.print(a +":" + record[a] + "  ");
}
System.out.println("\nDUMP_ END");
}

//皋牢窃荐肺 昏力秦档 公规.... 烙狼肺 涝仿茄 抛捞磐甫 馆靛矫 昏力
/*
public static void main(String[] args) throws Exception {
HSLogThread hsthread = new HSLogThread( new Socket(LOG_PORT), "23.30.153.132" );
String line = "";

HSLogThread test = new HSLogThread();

byte[] record = new byte[24];

for (int i = 0 ; i<24; i++) {
if ( i == 10) {
record[i] = 0;
}  else if (i == 11) {
record[i] = 3;
} else {
record[i] = 1;
}
}

line = test.parseMessage(record);

test.makeLogFile(line);
test.insertDB();
}*/}

解决方案 »

  1.   

    为了一段代码就学java我觉得太划不来了,因为我以后碰到java的机会实在太少。
      

  2.   

    我大概还是看得懂的,主要是我对java的类库不熟悉。其实只要把涉及到类库的部分,和跟C++不同的部分注释一下就行了,我要把它改成C++的
      

  3.   

    我原本想把你的代码每一行都给注释一下,但是后来一想没有这个必要,
    因为这样一方面太花我的时间了,另一方面,这也不是你学习的一个方法,
    我想了一下,就给你作一个稍稍的解释,不知道是不是正确,仅给你参考你这个类,是一个截获通信数据,并把他写成一个日志文件,且插入数据库
    这里面有二方面的内容:
    1、如何解释通信传输数据,就是那个parseMessage()方法,他把通过getInputStream()方法中socket.getInputStream()获得通信数据,经过一定的转换后,得到具体的可以阅读的文本内容
    2、就是如何进行对文件的读写和 插入数据库
    makeLogFile(protocol); //这个方法,我根据字面理解是生成log文件,是你自定义的方法
    insertDB(); //插入数据库,是你自定义的方法
    上面二个方法,是你自定义的方法,你没有给出,我也不好说什么 了
    OK
    花了我一些时间,不知道这样的解释你是否 满意??
      

  4.   

    完了,大家不要说废话了,时间已经过了。
    我打开始就不想学Java用Java.
    现在谁正面回答我的问题?
      

  5.   

    怪不得JAVA现在不流行了,都是这样的德行。
      

  6.   

    楼主,你还是把帖子结了吧, 大家不会在意你这可怜的100分的!!!!!! shit