Windows WinINet 函式庫提供完整的 FTP 用戶端功能,以下為核心 API 分類速查:
| 函數名稱 | 功能描述 |
|---|---|
InternetOpen | 初始化 WinINet 工作階段,取得會話控制代碼 |
InternetConnect | 建立 FTP/HTTP/Gopher 連線,回傳連線控制代碼 |
FtpCreateDirectory | 在伺服器建立新目錄 |
FtpRemoveDirectory | 刪除伺服器目錄 |
FtpOpenFile | 開啟伺服器檔案進行讀寫 |
FtpGetFile | 下載指定檔案至本地 |
FtpPutFile | 上傳本地檔案至伺服器 |
FtpDeleteFile | 刪除伺服器指定檔案 |
FtpSetCurrentDirectory | 設定伺服器當前工作目錄 |
FtpGetCurrentDirectory | 取得伺服器當前工作目錄 |
FtpCommand | 發送原始 FTP 指令 (如 LIST, SITE 等) |
FtpFindFirstFile | 開始列舉目錄,回傳首筆 WIN32_FIND_DATA |
InternetFindNextFile | 繼續列舉目錄後續項目 |
FtpRenameFile | 重新命名伺服器檔案 |
HINTERNET hSession = InternetOpen("MyFTPClient", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hConnect = InternetConnect(hSession, "ftp.example.com", INTERNET_DEFAULT_FTP_PORT, "user", "pass", INTERNET_SERVICE_FTP, 0, 0);
// 上傳
FtpPutFile(hConnect, "local.txt", "remote.txt", FTP_TRANSFER_TYPE_BINARY, 0);
// 下載
FtpGetFile(hConnect, "remote.txt", "local.txt", FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);
// 列舉目錄
WIN32_FIND_DATA findData;
HINTERNET hFind = FtpFindFirstFile(hConnect, "*", &findData, 0, 0);
if (hFind) {
do { /* 處理 findData */ } while (InternetFindNextFile(hFind, &findData));
InternetCloseHandle(hFind);
}
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
wininet.lib,標頭檔 wininet.hInternetCloseHandle 釋放INTERNET_FLAG_PASSIVE 旗標FtpOpenFile + InternetReadFile/InternetWriteFile 分塊處理GetLastError() 取得 WinINet 錯誤碼