使用ftp上傳文件失敗,究其原因是由於ftp server程序使用的控制端口21被佔用,所以在啓動ftp server程序之前做如下工作:
1.檢查防火牆是否關閉;
2.檢查ftp控制端口21是否被佔用。
實現方法:
1.在Windows XP環境下,通過代碼查詢註冊表:SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile下的EnableFirewall的值,1防火牆打開,0防火牆關閉。如果防火牆打開,提示用戶關閉防火牆。
2.通過調用批處理文件,關閉佔用端口21的進程。
批處理文件kill21.bat的內容如下:
@echo off
setlocal enabledelayedexpansion
for /f "delims= tokens=1" %%i in ('netstat -aon ^| findstr "21"') do (
set a=%%i
goto js
)
:js
taskkill /pid "!a:~71,5!"
如果單存調用批處理文件,會顯示命令提示窗口的黑框,爲了不顯示提示串口,需要使用run.vbs文件調用批處理文件kill21.bat,run.vbs文件內容如下:
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c Kill21.bat",0
在代碼中,ShellExecute(NULL,L"open",L"run.vbs" ,NULL, NULL, SW_SHOWNORMAL);調用run.vbs文件,就不會顯示命令行窗口。需要包含頭文件shellapi.h。