使用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。