具體實現程式碼:
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">