具體實現代碼:
1.
package ; import eredReader;import ;import OutputStream;import ception;import tStreamReader;import utStreamWriter;import tWriter;import erSocket;import et;import Map;import ;import ;import kingQueue;import utorService;import utors;import edBlockingQueue; import ment;import ent;import eader; /** * DMS服務端,用來接收每個客戶端發送過來的 * 配對日誌並保存在本地文件中 * @author Administrator * */public class DMSServer { //屬性定義 //用來接收客戶端連接的服務端的ServerSocket private ServerSocket server; //用來管理處理客戶端請求的線程的線程池 private ExecutorService threadPool; //保存所有客戶端發送過來配對日誌的文件 private File serverLogFile; //消息隊列 private BlockingQueue
2.
package ; import eredReader;import ;import ception;import tStreamReader;import utStreamWriter;import tWriter;import omAccessFile;import et;import yList;import Map;import ;import ;import y;import ; import ment;import ent;import eader; import ata;import ec; /** * 該客戶端運行在給用戶提供unix服務的服務器上。 * 用來讀取並收集該服務器上用戶的上下線信息,並 * 進行配對整理後發送給服務端彙總。 * @author Administrator * */public class DMSClient { //屬性定義 //第一步:解析日誌所需屬性 //unix系統日誌文件 private File logFile; //保存解析後日志的文件 private File textLogFile; //書籤文件 private File lastPositionFile; //每次解析日誌的條目數 private int batch; //第二步:配對日誌所需要屬性 //保存配對日誌的文件 private File logRecFile; //保存未配對日誌的文件 private File loginLogFile; //第三步:發送日誌所需要屬性 //服務端地址 private String serverHost; //服務端端口 private int serverPort; /** * 構造方法,用來初始化客戶端 * @throws Exception */ public DMSClient() throws Exception{ try { //1 解析配置文件 Map
3.
package ; import eredReader;import ;import InputStream;import tStreamReader;import tWriter;import omAccessFile;import yList;import ection;import ; import ata; /** * 該類是一個工具類,負責客戶端的IO操作 * @author Administrator * */public class IOUtil { /** * 從給定的文件中讀取每一行字符串(配對日誌) * 並存入一個集合後返回 * @param file * @return * @throws Exception */ public static List
4.
<"1.0" encoding="UTF-8">
5.
<"1.0" encoding="UTF-8">