FTP协议实现程序文件.docx
- 文档编号:28706070
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:33
- 大小:73.87KB
FTP协议实现程序文件.docx
《FTP协议实现程序文件.docx》由会员分享,可在线阅读,更多相关《FTP协议实现程序文件.docx(33页珍藏版)》请在冰豆网上搜索。
FTP协议实现程序文件
课题:
FTP协议实现程序
选题
1.课程设计目的
本课程设计设计需要编写程序,对FPT协议有非常清楚的认识
2.课程设计要求
完成应用层协议的基本工作模型,规划客户,服务器的基本结构与模块组成,完成应用层协议设计,网络应用软件设计方法与编程。
FTP功能模块及原理
1.FPT基本原理
FTP使用两条Tcp连接来完成文件传输,控制连接与数据连接。
控制连接用与传输控制,数据连接用于数据传输。
在服务器启动后,服务器会在端口21等待客户的连接请求,有用户需要传输文件时,客户与服务器的端口21建立一个控制连接,用来传送客户的命令和服务器的应答,是连接一直保持到客户与服务器通信结果为止。
当客户发出数据传输命令时,服务器会主动与客户建立数据连接,并与其进行数据交换。
2.FTP功能模块
FTP功能模块及FTP连接
1程序功能的介绍
1)FTP连接
进行FTP连接,首先要给出目的计算机的名称或地址,当连接到信宿机后,一般要进行登录,在检验用户ID号和口令后,连接才得以建立,某些系统也允许用户进行匿名登录。
与在所有的多用户系统中一样,对于同一目录或文件,不同的用户拥有不同的权限,所以在使用过程中,需要验证权限。
2)文件传输方式
FTP可用多种格式传输文件,通常由系统定,大多数系统(包括UNIX系统)只有两种模式:
文本模式和二进制模式。
文件传输器使用ASCII码,并由回车键和换行符分开,而二进制不用转换或格式化就可以传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理而一般将FTP设置成二进制模式。
3)断开连接
比较流行的FTP软件,一般有取消传输的指令和重建连接的指令,本程序只有断开连接的指令。
以上三方面是本程序的主要功能,事实上还不够完善。
例如:
显示消息,更改端口等。
2程序设计
1)设计界面
如图6-1所示本程序采取单一界面。
界面内的控件采用控件为CommandButton,Line,TextBox,OptionButton,TreeView,DirListBox,FileListBox和DriveListBox。
以下是主要控件的属性列表:
程序主界面控件布置
对象
属性
设置值
fmVBFTPJRForm
Caption
VbFTP
CmdInternetOpenCommandButton
Caption
StartInternetSession
TxtProxyTextBox
所有属性
默认
CmdConnectCommandButton
Caption
Connect
ChkPassiveCheckBox
Caption
PassiveFTPsyntax
CmdDisconnectCommandButton
Caption
Disconnect
CmdClosehOpenCommandButton
Caption
CloseInternetSession
TreeView1TreeView
所有属性
默认
OptBinOptionButton
Caption
Binary
optAsciiOptionButton
Caption
Ascii
cmdGetCommandButton
Caption
Download
cmdPutCommandButton
Caption
Upload
Drive1DriveListBox
所有属性
默认
Dir1DirListBox
所有属性
默认
File1FileListBox
所有属性
默认
TxtServerTextBox
Caption
InputIPhere
txtUserTextBox
所有属性
默认
txtPasswordTextBox
Passwordchar
*
控制对象属性列表
3程序
AttributeVB_Name="modWinInet"
OptionExplicit
DeclareFunctionGetProcessHeapLib"kernel32"()AsLong
DeclareFunctionHeapAllocLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,ByValdwBytesAsLong)AsLong
DeclareFunctionHeapFreeLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,lpMemAsAny)AsLong
PublicConstHEAP_ZERO_MEMORY=&H8
PublicConstHEAP_GENERATE_EXCEPTIONS=&H4
DeclareSubCopyMemory1Lib"kernel32"Alias"RtlMoveMemory"(_
hpvDestAsAny,ByValhpvSourceAsLong,ByValcbCopyAsLong)
DeclareSubCopyMemory2Lib"kernel32"Alias"RtlMoveMemory"(_
hpvDestAsLong,hpvSourceAsAny,ByValcbCopyAsLong)
PublicConstMAX_PATH=260
PublicConstNO_ERROR=0
PublicConstFILE_ATTRIBUTE_READONLY=&H1
PublicConstFILE_ATTRIBUTE_HIDDEN=&H2
PublicConstFILE_ATTRIBUTE_SYSTEM=&H4
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
EndType
PublicConstERROR_NO_MORE_FILES=18
PublicDeclareFunctionInternetFindNextFileLib"wininet.dll"Alias"InternetFindNextFileA"_
(ByValhFindAsLong,lpvFindDataAsWIN32_FIND_DATA)AsLong
PublicDeclareFunctionFtpFindFirstFileLib"wininet.dll"Alias"FtpFindFirstFileA"_
(ByValhFtpSessionAsLong,ByVallpszSearchFileAsString,_
lpFindFileDataAsWIN32_FIND_DATA,ByValdwFlagsAsLong,ByValdwContentAsLong)AsLong
PublicDeclareFunctionFtpGetFileLib"wininet.dll"Alias"FtpGetFileA"_
(ByValhFtpSessionAsLong,ByVallpszRemoteFileAsString,_
ByVallpszNewFileAsString,ByValfFailIfExistsAsBoolean,ByValdwFlagsAndAttributesAsLong,_
ByValdwFlagsAsLong,ByValdwContextAsLong)AsBoolean
PublicDeclareFunctionFtpPutFileLib"wininet.dll"Alias"FtpPutFileA"_
(ByValhFtpSessionAsLong,ByVallpszLocalFileAsString,_
ByVallpszRemoteFileAsString,_
ByValdwFlagsAsLong,ByValdwContextAsLong)AsBoolean
PublicDeclareFunctionFtpSetCurrentDirectoryLib"wininet.dll"Alias"FtpSetCurrentDirectoryA"_
(ByValhFtpSessionAsLong,ByVallpszDirectoryAsString)AsBoolean
PublicDeclareFunctionInternetOpenLib"wininet.dll"Alias"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=&H1
PublicConstFTP_TRANSFER_TYPE_BINARY=&H1
PublicConstINTERNET_FLAG_PASSIVE=&H8000000
PublicDeclareFunctionInternetConnectLib"wininet.dll"Alias"InternetConnectA"_
(ByValhInternetSessionAsLong,ByValsServerNameAsString,ByValnServerPortAsInteger,_
ByValsUsernameAsString,ByValsPasswordAsString,ByVallServiceAsLong,_
ByVallFlagsAsLong,ByVallContextAsLong)AsLong
PublicConstERROR_INTERNET_EXTENDED_ERROR=12003
PublicDeclareFunctionInternetGetLastResponseInfoLib"wininet.dll"Alias"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"wininet.dll"Alias"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=&H80000000
PublicConstGENERIC_WRITE=&H40000000
PublicDeclareFunctionHttpSendRequestLib"wininet.dll"Alias"HttpSendRequestA"(ByVal_
hHttpRequestAsLong,ByValsHeadersAsString,ByVallHeadersLengthAsLong,ByValsOptionalAs_
String,ByVallOptionalLengthAsLong)AsInteger
PublicDeclareFunctionHttpQueryInfoLib"wininet.dll"Alias"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=&H80000000
PublicConstHTTP_QUERY_FLAG_NUMBER=&H20000000
PublicDeclareFunctionInternetReadFileLib"wininet.dll"_
(ByValhFileAsLong,ByValsBufferAsString,ByVallNumBytesToReadAsLong,_
lNumberOfBytesReadAsLong)AsInteger
PublicDeclareFunctionInternetWriteFileLib"wininet.dll"_
(ByValhFileAsLong,ByValsBufferAsString,_
ByVallNumberOfBytesToReadAsLong,_
lNumberOfBytesReadAsLong)AsInteger
PublicDeclareFunctionFtpOpenFileLib"wininet.dll"Alias_
"FtpOpenFileA"(ByValhFtpSessionAsLong,_
ByValsFileNameAsString,ByVallAccessAsLong,_
ByVallFlagsAsLong,ByVallContextAsLong)AsLong
PublicDeclareFunctionFtpDeleteFileLib"wininet.dll"_
Alias"FtpDeleteFileA"(ByValhFtpSessionAsLong,_
ByVallpszFileNameAsString)AsBoolean
PublicDeclareFunctionInternetSetOptionLib"wininet.dll"Alias"InternetSetOptionA"_
(ByValhInternetAsLong,ByVallOptionAsLong,ByRefsBufferAsAny,ByVallBufferLengthAsLong)AsInteger
PublicDeclareFunctionInternetSetOptionStrLib"wininet.dll"Alias"InternetSetOptionA"_
(ByValhInternetAsLong,ByVallOptionAsLong,ByValsBufferAsString,ByVallBufferLengthAsLong)AsInteger
PublicDeclareFunctionInternetCloseHandleLib"wininet.dll"_
(ByValhInetAsLong)AsInteger
PublicDeclareFunctionInternetQueryOptionLib"wininet.dll"Alias"InternetQueryOptionA"_
(ByValhInternetAsLong,ByVallOptionAsLong,ByRefsBufferAsAny,ByReflBufferLengthAsLong)AsInteger
PublicConstINTERNET_OPTION_VERSION=40
PublicTypetWinInetDLLVersion
lMajorVersionAsLong
lMinorVersionAsLong
EndType
PublicDeclareFunctionHttpAddRequestHeadersLib"wininet.dll"Alias"HttpAddRequestHeadersA"_
(ByValhHttpRequestAsLong,ByValsHeadersAsString,ByVallHeadersLengthAsLong,_
ByVallModifiersAsLong)AsInteger
PublicConstHTTP_ADDREQ_FLAG_ADD_IF_NEW=&H10000000
PublicConstHTTP_ADDREQ_FLAG_ADD=&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FTP 协议 实现 程序 文件