本文將三項實用的 Java 技術整合在一起:多線程 HTTP 文件下載、內嵌 HTTP 服務端口監聽、以及打包為 Windows 自啟動服務。作者循序漸進地拆解每個模組的核心邏輯與代碼實現,適合需要跨語言調用下載功能或部署後台常駐服務的開發者參考。
多線程下載利用 HTTP 協議的 Range 標頭,指定每個線程讀取的位元組範圍。例如 Range: bytes=100-2000 表示從第 100 字節讀到第 2000 字節。程式先取得檔案總長度,再按線程數均分區塊,各線程透過 RandomAccessFile 在對應位置並行讀寫。
代碼支援斷點續傳邏輯、Referer 偽裝防盜鏈、自動調整線程數上限(預設 10,最小塊 10KB)。
基於 JDK 6 的 com.sun.net.httpserver.HttpServer 實現輕量級 HTTP 端點。啟動時綁定指定端口(預設 60080),註冊 HTTPDownloaderServiceHandler 處理請求。客戶端只需發送 GET 請求並帶三個參數:
page:目標下載 URLrpage:Referer 頁面(防盜鏈)savepath:本地儲存路徑範例:https://127.0.0.1:60080?page=https://example.com/file.zip&rpage=https://example.com&savepath=d:/file.zip
使用 Java Service Wrapper 或 Procrun 等工具,將上述 HTTP 服務打包為 Windows Service,設置為「自動」啟動類型,即可在機器開機時無需登入即啟動下載服務。完整打包腳本與配置檔可參考原文提供的下載包。
深入理解 HTTP 協議(特別是 Range、Referer、User-Agent 等標頭)對於開發網絡工具至關重要。將核心功能解耦為獨立服務,再透過標準協議暴露,能大幅提升系統的可擴展性與跨語言互操作能力。