本文為系列核心,展示伺服端服務執行緒 AUpdSrvProc 與客戶端升級處理 AutoUpdateClient 的完整通訊邏輯。
每個客戶端連線一條執行緒,主迴路讀取 Flag(1 byte) 分派處理:
READY_TO_UPDATE → 呼叫 sendUpdateFile() 發送差異檔案BYE → 回應 BYE 並斷開SEND_CLIENT_VERSION → 呼叫 receiveClientVer() 接收客戶端版本 XMLNOTNEED_UPDATEDsendFile()SEND_FILE_ABSOULT + 絕對路徑START_TRANSMITMARK_DATA_SECT + 長度 + 資料)MARK_DATA_ENDTERMINATE_TRANSMIT 確認autoupdate.xml 與說明檔 history.htm主流程:
SEND_CLIENT_VERSION + 本地版本 XMLRECEIVED_CLIENT_VERSION → 回 READY_TO_UPDATESEND_FILE_ABSOULT → 接收路徑 → 回 RECEIVED_FILE_ABSOULTSTART_TRANSMIT → 接收檔案內容寫入磁碟 → 回 TERMINATE_TRANSMITUPDATED_SUCCESSFUL/FAILURE/NOTNEED_UPDATED → 結束finally 關閉 Socket/Stream,防洩漏。同樣用 DOM4J 解析客戶端上傳的版本 XML,轉為 UpdFile[] 供伺服端比對。
下一篇(四)將展示配置類與工具方法,完成整個系列。