FTP协议实现程序文件Word文档下载推荐.docx
《FTP协议实现程序文件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《FTP协议实现程序文件Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
比较流行的FTP软件,一般有取消传输的指令和重建连接的指令,本程序只有断开连接的指令。
以上三方面是本程序的主要功能,事实上还不够完善。
例如:
显示消息,更改端口等。
2程序设计
1)设计界面
如图6-1所示本程序采取单一界面。
界面的控件采用控件为CommandButton,Line,TextBox,OptionButton,TreeView,DirListBox,FileListBox和DriveListBox。
以下是主要控件的属性列表:
程序主界面控件布置
对象
属性
设置值
fmVBFTPJRForm
Caption
VbFTP
CmdInternetOpenCommandButton
StartInternetSession
TxtProxyTextBox
所有属性
默认
CmdConnectCommandButton
Connect
ChkPassiveCheckBox
PassiveFTPsyntax
CmdDisconnectCommandButton
Disconnect
CmdClosehOpenCommandButton
CloseInternetSession
TreeView1TreeView
OptBinOptionButton
Binary
optAsciiOptionButton
Ascii
cmdGetCommandButton
Download
cmdPutCommandButton
Upload
Drive1DriveListBox
Dir1DirListBox
File1FileListBox
TxtServerTextBox
InputIPhere
txtUserTextBox
txtPasswordTextBox
Passwordchar
*
控制对象属性列表
3程序
AttributeVB_Name="
modWinInet"
OptionExplicit
DeclareFunctionGetProcessHeapLib"
kernel32"
()AsLong
DeclareFunctionHeapAllocLib"
(ByValhHeapAsLong,ByValdwFlagsAsLong,ByValdwBytesAsLong)AsLong
DeclareFunctionHeapFreeLib"
(ByValhHeapAsLong,ByValdwFlagsAsLong,lpMemAsAny)AsLong
PublicConstHEAP_ZERO_MEMORY=&
H8
PublicConstHEAP_GENERATE_EXCEPTIONS=&
H4
DeclareSubCopyMemory1Lib"
Alias"
RtlMoveMemory"
(_
hpvDestAsAny,ByValhpvSourceAsLong,ByValcbCopyAsLong)
DeclareSubCopyMemory2Lib"
hpvDestAsLong,hpvSourceAsAny,ByValcbCopyAsLong)
PublicConstMAX_PATH=260
PublicConstNO_ERROR=0
PublicConstFILE_ATTRIBUTE_READONLY=&
H1
PublicConstFILE_ATTRIBUTE_HIDDEN=&
H2
PublicConstFILE_ATTRIBUTE_SYSTEM=&
PublicConstFILE_ATTRIBUTE_DIRECTORY=&
H10
PublicConstFILE_ATTRIBUTE_ARCHIVE=&
H20
PublicConstFILE_ATTRIBUTE_NORMAL=&
H80
PublicConstFILE_ATTRIBUTE_TEMPORARY=&
H100
PublicConstFILE_ATTRIBUTE_COMPRESSED=&
H800
PublicConstFILE_ATTRIBUTE_OFFLINE=&
H1000
TypeFILETIME
dwLowDateTimeAsLong
dwHighDateTimeAsLong
EndType
TypeWIN32_FIND_DATA
dwFileAttributesAsLong
ftCreationTimeAsFILETIME
ftLastAccessTimeAsFILETIME
ftLastWriteTimeAsFILETIME
nFileSizeHighAsLong
nFileSizeLowAsLong
dwReserved0AsLong
dwReserved1AsLong
cFileNameAsString*MAX_PATH
cAlternateAsString*14
PublicConstERROR_NO_MORE_FILES=18
PublicDeclareFunctionInternetFindNextFileLib"
wininet.dll"
InternetFindNextFileA"
_
(ByValhFindAsLong,lpvFindDataAsWIN32_FIND_DATA)AsLong
PublicDeclareFunctionFtpFindFirstFileLib"
FtpFindFirstFileA"
(ByValhFtpSessionAsLong,ByVallpszSearchFileAsString,_
lpFindFileDataAsWIN32_FIND_DATA,ByValdwFlagsAsLong,ByValdwContentAsLong)AsLong
PublicDeclareFunctionFtpGetFileLib"
FtpGetFileA"
(ByValhFtpSessionAsLong,ByVallpszRemoteFileAsString,_
ByVallpszNewFileAsString,ByValfFailIfExistsAsBoolean,ByValdwFlagsAndAttributesAsLong,_
ByValdwFlagsAsLong,ByValdwContextAsLong)AsBoolean
PublicDeclareFunctionFtpPutFileLib"
FtpPutFileA"
(ByValhFtpSessionAsLong,ByVallpszLocalFileAsString,_
ByVallpszRemoteFileAsString,_
PublicDeclareFunctionFtpSetCurrentDirectoryLib"
FtpSetCurrentDirectoryA"
(ByValhFtpSessionAsLong,ByVallpszDirectoryAsString)AsBoolean
PublicDeclareFunctionInternetOpenLib"
InternetOpenA"
(ByValsAgentAsString,ByVallAccessTypeAsLong,ByValsProxyNameAsString,_
ByValsProxyBypassAsString,ByVallFlagsAsLong)AsLong
PublicConstscUserAgent="
vbwininet"
PublicConstINTERNET_OPEN_TYPE_PRECONFIG=0
PublicConstINTERNET_OPEN_TYPE_DIRECT=1
PublicConstINTERNET_OPEN_TYPE_PROXY=3
PublicConstINTERNET_INVALID_PORT_NUMBER=0
PublicConstFTP_TRANSFER_TYPE_ASCII=&
PublicConstFTP_TRANSFER_TYPE_BINARY=&
PublicConstINTERNET_FLAG_PASSIVE=&
H8000000
PublicDeclareFunctionInternetConnectLib"
InternetConnectA"
(ByValhInternetSessionAsLong,ByValsServerNameAsString,ByValnServerPortAsInteger,_
ByValsUsernameAsString,ByValsPasswordAsString,ByVallServiceAsLong,_
ByVallFlagsAsLong,ByVallContextAsLong)AsLong
PublicConstERROR_INTERNET_EXTENDED_ERROR=12003
PublicDeclareFunctionInternetGetLastResponseInfoLib"
InternetGetLastResponseInfoA"
lpdwErrorAsLong,_
ByVallpszBufferAsString,_
lpdwBufferLengthAsLong)AsBoolean
PublicConstINTERNET_DEFAULT_FTP_PORT=21
PublicConstINTERNET_DEFAULT_GOPHER_PORT=70
PublicConstINTERNET_DEFAULT_HTTP_PORT=80
PublicConstINTERNET_DEFAULT_HTTPS_PORT=443
PublicConstINTERNET_DEFAULT_SOCKS_PORT=1080
PublicConstINTERNET_OPTION_CONNECT_TIMEOUT=2
PublicConstINTERNET_OPTION_RECEIVE_TIMEOUT=6
PublicConstINTERNET_OPTION_SEND_TIMEOUT=5
PublicConstINTERNET_OPTION_USERNAME=28
PublicConstINTERNET_OPTION_PASSWORD=29
PublicConstINTERNET_OPTION_PROXY_USERNAME=43
PublicConstINTERNET_OPTION_PROXY_PASSWORD=44
PublicConstINTERNET_SERVICE_FTP=1
PublicConstINTERNET_SERVICE_GOPHER=2
PublicConstINTERNET_SERVICE_HTTP=3
PublicDeclareFunctionHttpOpenRequestLib"
HttpOpenRequestA"
(ByValhHttpSessionAsLong,ByValsVerbAsString,ByValsObjectNameAsString,ByValsVersionAsString,_
ByValsRefererAsString,ByValsomethingAsLong,ByVallFlagsAsLong,ByVallContextAsLong)AsLong
PublicConstINTERNET_FLAG_RELOAD=&
H80000000
PublicConstINTERNET_FLAG_KEEP_CONNECTION=&
H400000
PublicConstINTERNET_FLAG_MULTIPART=&
H200000
PublicConstGENERIC_READ=&
PublicConstGENERIC_WRITE=&
H40000000
PublicDeclareFunctionHttpSendRequestLib"
HttpSendRequestA"
(ByVal_
hHttpRequestAsLong,ByValsHeadersAsString,ByVallHeadersLengthAsLong,ByValsOptionalAs_
String,ByVallOptionalLengthAsLong)AsInteger
PublicDeclareFunctionHttpQueryInfoLib"
HttpQueryInfoA"
(ByValhHttpRequestAsLong,ByVallInfoLevelAsLong,ByRefsBufferAsAny,_
ByReflBufferLengthAsLong,ByReflIndexAsLong)AsInteger
PublicConstHTTP_QUERY_CONTENT_TYPE=1
PublicConstHTTP_QUERY_CONTENT_LENGTH=5
PublicConstHTTP_QUERY_EXPIRES=10
PublicConstHTTP_QUERY_LAST_MODIFIED=11
PublicConstHTTP_QUERY_PRAGMA=17
PublicConstHTTP_QUERY_VERSION=18
PublicConstHTTP_QUERY_STATUS_CODE=19
PublicConstHTTP_QUERY_STATUS_TEXT=20
PublicConstHTTP_QUERY_RAW_HEADERS=21
PublicConstHTTP_QUERY_RAW_HEADERS_CRLF=22
PublicConstHTTP_QUERY_FORWARDED=30
PublicConstHTTP_QUERY_SERVER=37
PublicConstHTTP_QUERY_USER_AGENT=39
PublicConstHTTP_QUERY_SET_COOKIE=43
PublicConstHTTP_QUERY_REQUEST_METHOD=45
PublicConstHTTP_STATUS_DENIED=401
PublicConstHTTP_STATUS_PROXY_AUTH_REQ=407
PublicConstHTTP_QUERY_FLAG_REQUEST_HEADERS=&
PublicConstHTTP_QUERY_FLAG_NUMBER=&
H20000000
PublicDeclareFunctionInternetReadFileLib"
(ByValhFileAsLong,ByValsBufferAsString,ByVallNumBytesToReadAsLong,_
lNumberOfBytesReadAsLong)AsInteger
PublicDeclareFunctionInternetWriteFileLib"
(ByValhFileAsLong,ByValsBufferAsString,_
ByVallNumberOfBytesToReadAsLong,_
lNumberOfBytesReadAsLong)AsInteger
PublicDeclareFunctionFtpOpenFileLib"
Alias_
"
FtpOpenFileA"
(ByValhFtpSessionAsLong,_
ByValsFileNameAsString,ByVallAccessAsLong,_
ByVallFlagsAsLong,ByVallContextAsLong)AsLong
PublicDeclareFunctionFtpDeleteFileLib"
FtpDeleteFileA"
ByVallpszFileNameAsString)AsBoolean
PublicDeclareFunctionInternetSetOptionLib"
InternetSetOptionA"
(ByValhInternetAsLong,ByVallOptionAsLong,ByRefsBufferAsAny,ByVallBufferLengthAsLong)AsInteger
PublicDeclareFunctionInternetSetOptionStrLib"
(ByValhInternetAsLong,ByVallOptionAsLong,ByValsBufferAsString,ByVallBufferLengthAsLong)AsInteger
PublicDeclareFunctionInternetCloseHandleLib"
(ByValhInetAsLong)AsInteger
PublicDeclareFunctionInternetQueryOptionLib"
InternetQueryOptionA"
(ByValhInternetAsLong,ByVallOptionAsLong,ByRefsBufferAsAny,ByReflBufferLengthAsLong)AsInteger
PublicConstINTERNET_OPTION_VERSION=40
PublicTypetWinInetDLLVersion
lMajorVersionAsLong
lMinorVersionAsLong
PublicDeclareFunctionHttpAddRequestHeadersLib"
HttpAddRequestHeadersA"
(ByValhHttpRequestAsLong,ByValsHeadersAsString,ByVallHeadersLengthAsLong,_
ByVallModifiersAsLong)AsInteger
PublicConstHTTP_ADDREQ_FLAG_ADD_IF_NEW=&
H10000000
PublicConstHTTP_ADDREQ_FLAG_ADD=&
H