FTP协议实现程序_第1页
FTP协议实现程序_第2页
FTP协议实现程序_第3页
FTP协议实现程序_第4页
FTP协议实现程序_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选合同范本课题: FTP协议实现程序选题1 课程设计目的本课程设计设计需要编写程序,对FPT 协议有非常清楚的认识2 课程设计要求完成应用层协议的基本工作模型,规划客户,服务器的基本结构与模块组成,完成应用层协议设计,网络应用软件设计方法与编程。FTP 功能模块及原理1 FPT 基本原理FTP 使用两条 Tcp 连接来完成文件传输,控制连接与数据连接。控制连接用与传输控制,数据连接用于数据传输。在服务器启动后,服务器会在端口21 等待客户的连接请求,有用户需要传输文件时,客户与服务器的端口21 建立一个控制连接,用来传送客户的命令和服务器的应答,是连接一直保持到客户与服务器通信结果为止。当客

2、户发出数据传输命令时,服务器会主动与客户建立数据连接,并与其进行数据交换。2 FTP 功能模块FTP 功能模块及FTP 连接精选合同范本1 程序功能的介绍1) FTP 连接进行 FTP 连接,首先要给出目的计算机的名称或地址,当连接到信宿机后,一般要进行登录,在检验用户 ID 号和口令后,连接才得以建立,某些系统也允许用户进行匿名登录。与在所有的多用户系统中一样,对于 同一目录或文件,不同的用户拥有不同的权限,所以在使用过程中,需要验证权限。2)文件传输方式FTP 可用多种格式传输文件,通常由系统定,大多数系统(包括UNIX 系统)只有两种模式:文本模式和二进制模式。文件传输器使用ASCII码

3、,并由回车键和换行符分开,而二进制不用转换或格式化就可以传字符,二进制模式比文本模式更快,并且可以传输所有 ASCII 值,所以系统管理而一般将 FTP 设置成二进制模式。3)断开连接比较流行的 FTP 软件,一般有取消传输的指令和重建连接的指令,本程序只有断开连接的指令。以上三方面是本程序的主要功能,事实上还不够完善。例如:显示消息,更改端口等。2 程序设计1)设计界面如 图6 1所 示 本 程 序 采 取 单 一 界 面 。 界 面 内 的 控 件 采 用 控 件 为CommandButton,Line,TextBox,Option Button,Tree View,DirListBox,

4、FileList Box 和 Drive List Box 。以下是主要控件的属性列表:程序主界面控件布置精选合同范本对象属性设置值fmVBFTPJR FormCaptionVbFTPStart InternetCmdInternetOpen CommandButtonCaptionSessionTxtProxy TextBox所有属性默认CmdConnect CommandButtonCaptionConnectChkPassive CheckBoxCaptionPassive FTP syntaxCmdDisconnect CommandButtonCaptionDisconnectClo

5、se InternetCmdClosehOpen CommandButtonCaptionSessionTree View1 Tree View所有属性默认OptBin OptionButtonCaptionBinaryoptAscii OptionButtonCaptionAsciicmdGet CommandButtonCaptionDownloadcmdPut CommandButtonCaptionUploadDrive1 DriveListBox所有属性默认Dir1 DirListBox所有属性默认File1 FileListBox所有属性默认TxtServer TextBoxCap

6、tionInput IP heretxtUser TextBox所有属性默认txtPassword TextBoxPasswordchar*控制对象属性列表3 程序Attribute VB_Name = "modWinInet"Option ExplicitDeclare Function GetProcessHeap Lib "kernel32" () As LongDeclare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Lon

7、g, ByVal dwBytes As Long) As LongDeclare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As LongPublic Const HEAP_ZERO_MEMORY = &H8Public Const HEAP_GENERATE_EXCEPTIONS = &H4Declare Sub CopyMemory1 Lib "kernel32" Alias "Rtl

8、MoveMemory" ( _ hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)Declare Sub CopyMemory2 Lib "kernel32" Alias "RtlMoveMemory" ( _hpvDest As Long, hpvSource As Any, ByVal cbCopy As Long)Public Const MAX_PATH = 260精选合同范本Public Const NO_ERROR = 0Public Const FILE_A

9、TTRIBUTE_READONLY = &H1Public Const FILE_ATTRIBUTE_HIDDEN = &H2Public Const FILE_ATTRIBUTE_SYSTEM = &H4Public Const FILE_ATTRIBUTE_DIRECTORY = &H10Public Const FILE_ATTRIBUTE_ARCHIVE = &H20Public Const FILE_ATTRIBUTE_NORMAL = &H80Public Const FILE_ATTRIBUTE_TEMPORARY = &H

10、100Public Const FILE_ATTRIBUTE_COMPRESSED = &H800Public Const FILE_ATTRIBUTE_OFFLINE = &H1000Type FILETIMEdwLowDateTime As LongdwHighDateTime As LongEnd TypeType WIN32_FIND_DATAdwFileAttributes As LongftCreationTime As FILETIMEftLastAccessTime As FILETIMEftLastWriteTime As FILETIMEnFileSizeH

11、igh As LongnFileSizeLow As LongdwReserved0 As LongdwReserved1 As LongcFileName As String * MAX_PATHcAlternate As String * 14End TypePublic Const ERROR_NO_MORE_FILES = 18Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _ (ByVal hFind As

12、Long, lpvFindData As WIN32_FIND_DATA) As LongPublic Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" _ (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _lpFindFileDataAs WIN32_FIND_DATA,ByVal dwFlags As Long, ByVal dwContent As Long) As Lon

13、gPublic Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _ (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, _精选合同范本ByVal dwFlags As Long, ByVal dwContext

14、As Long) As BooleanPublic Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _ (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _ByVal lpszRemoteFile As String, _ByVal dwFlags As Long, ByVal dwContext As Long) As BooleanPublicDeclareFunctionFtpSetCurrentD

15、irectoryLib"wininet.dll"Alias"FtpSetCurrentDirectoryA" _(ByVal hFtpSession As Long, ByVal lpszDirectory As String) As BooleanPublic Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _(ByVal sAgent As String, ByVal lAccessType As Long, ByVal

16、 sProxyName As String, _ByVal sProxyBypass As String, ByVal lFlags As Long) As LongPublic Const scUserAgent = "vb wininet"Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0Public Const INTERNET_OPEN_TYPE_DIRECT = 1Public Const INTERNET_OPEN_TYPE_PROXY = 3Public Const INTERNET_INVALID_PORT_NUMBE

17、R = 0Public Const FTP_TRANSFER_TYPE_ASCII = &H1Public Const FTP_TRANSFER_TYPE_BINARY = &H1Public Const INTERNET_FLAG_PASSIVE = &H8000000Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _(ByVal hInternetSession As Long, ByVal sServerNa

18、me As String, ByVal nServerPort As Integer, _ ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, _ ByVal lFlags As Long, ByVal lContext As Long) As LongPublic Const ERROR_INTERNET_EXTENDED_ERROR = 12003PublicDeclareFunctionInternetGetLastResponseInfoLib"wininet.dll&qu

19、ot;Alias"InternetGetLastResponseInfoA" ( _lpdwError As Long, _ByVal lpszBuffer As String, _lpdwBufferLength As Long) As BooleanPublic Const INTERNET_DEFAULT_FTP_PORT = 21Public Const INTERNET_DEFAULT_GOPHER_PORT = 70Public Const INTERNET_DEFAULT_HTTP_PORT = 80Public Const INTERNET_DEFAULT_

20、HTTPS_PORT = 443Public Const INTERNET_DEFAULT_SOCKS_PORT = 1080Public Const INTERNET_OPTION_CONNECT_TIMEOUT = 2精选合同范本Public Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6Public Const INTERNET_OPTION_SEND_TIMEOUT = 5Public Const INTERNET_OPTION_USERNAME = 28Public Const INTERNET_OPTION_PASSWORD = 29Public

21、 Const INTERNET_OPTION_PROXY_USERNAME = 43Public Const INTERNET_OPTION_PROXY_PASSWORD = 44Public Const INTERNET_SERVICE_FTP = 1Public Const INTERNET_SERVICE_GOPHER = 2Public Const INTERNET_SERVICE_HTTP = 3Public Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequest

22、A" _(ByVal hHttpSession As Long, ByVal sVerb As String, ByVal sObjectName As String, ByVal sVersion As String, _ByVal sRefererAs String,ByVal something AsLong, ByVal lFlags AsLong, ByVal lContextAs Long)As LongPublic Const INTERNET_FLAG_RELOAD = &H80000000Public Const INTERNET_FLAG_KEEP_CON

23、NECTION = &H400000Public Const INTERNET_FLAG_MULTIPART = &H200000Public Const GENERIC_READ = &H80000000Public Const GENERIC_WRITE = &H40000000Public Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal _ hHttpRequest As Long, ByVal sH

24、eaders As String, ByVal lHeadersLength As Long, ByVal sOptional As _String, ByVal lOptionalLength As Long) As IntegerPublic Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" _ (ByVal hHttpRequest As Long, ByVal lInfoLevel As Long, ByRef sBuffer As Any, _ ByR

25、ef lBufferLength As Long, ByRef lIndex As Long) As IntegerPublic Const HTTP_QUERY_CONTENT_TYPE = 1Public Const HTTP_QUERY_CONTENT_LENGTH = 5Public Const HTTP_QUERY_EXPIRES = 10Public Const HTTP_QUERY_LAST_MODIFIED = 11Public Const HTTP_QUERY_PRAGMA = 17Public Const HTTP_QUERY_VERSION = 18Public Cons

26、t HTTP_QUERY_STATUS_CODE = 19Public Const HTTP_QUERY_STATUS_TEXT = 20Public Const HTTP_QUERY_RAW_HEADERS = 21精选合同范本Public Const HTTP_QUERY_RAW_HEADERS_CRLF = 22Public Const HTTP_QUERY_FORWARDED = 30Public Const HTTP_QUERY_SERVER = 37Public Const HTTP_QUERY_USER_AGENT = 39Public Const HTTP_QUERY_SET_

27、COOKIE = 43Public Const HTTP_QUERY_REQUEST_METHOD = 45Public Const HTTP_STATUS_DENIED = 401Public Const HTTP_STATUS_PROXY_AUTH_REQ = 407Public Const HTTP_QUERY_FLAG_REQUEST_HEADERS = &H80000000 Public Const HTTP_QUERY_FLAG_NUMBER = &H20000000 Public Declare Function InternetReadFile Lib &quo

28、t;wininet.dll" _(ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, _ lNumberOfBytesRead As Long) As IntegerPublic Declare Function InternetWriteFile Lib "wininet.dll" _(ByVal hFile As Long, ByVal sBuffer As String, _ByVal lNumberOfBytesToRead As Long, _lNumb

29、erOfBytesRead As Long) As IntegerPublic Declare Function FtpOpenFile Lib "wininet.dll" Alias _"FtpOpenFileA" (ByVal hFtpSession As Long, _ByVal sFileName As String, ByVal lAccess As Long, _ByVal lFlags As Long, ByVal lContext As Long) As LongPublic Declare Function FtpDeleteFile

30、Lib "wininet.dll" _Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _ByVal lpszFileName As String) As BooleanPublic Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" _(ByVal hInternet As Long, ByVal lOption As Long, ByRef sBuffe

31、r As Any, ByVal lBufferLength As Long) As IntegerPublic Declare Function InternetSetOptionStr Lib "wininet.dll" Alias "InternetSetOptionA" _ (ByVal hInternet As Long, ByVal lOption As Long, ByVal sBuffer As String, ByVal lBufferLength As Long) As IntegerPublic Declare Function In

32、ternetCloseHandle Lib "wininet.dll" _(ByVal hInet As Long) As IntegerPublic Declare Function InternetQueryOption Lib "wininet.dll" Alias "InternetQueryOptionA" _ (ByVal hInternet As Long, ByVal lOption As Long, ByRef sBuffer As Any, ByRef lBufferLength As Long) As Integ

33、erPublic Const INTERNET_OPTION_VERSION = 40Public Type tWinInetDLLVersion精选合同范本lMajorVersion As LonglMinorVersion As LongEnd TypePublic Declare FunctionHttpAddRequestHeadersLib"wininet.dll" Alias "HttpAddRequestHeadersA"_(ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVa

34、l lHeadersLength As Long, _ ByVal lModifiers As Long) As IntegerPublic Const HTTP_ADDREQ_FLAG_ADD_IF_NEW = &H10000000Public Const HTTP_ADDREQ_FLAG_ADD = &H20000000Public Const HTTP_ADDREQ_FLAG_REPLACE = &H80000000VERSION 5.00Object = "6B7E6392-850A-101B-AFC0-4210102A8DA7#1.3#0"

35、 "COMCTL32.OCX"Begin VB.Form fmVBFTPJRCaption="vbFTP"ClientHeight=5640ClientLeft=60ClientTop=345ClientWidth=8715Icon="fmVBFTPJR.frx":0000LinkTopic="Form1"ScaleHeight=5640ScaleWidth=8715StartUpPosition =3 ' °?úè±ê?Begin VB.OptionBut

36、ton optAsciiHeight=195Left=3600TabIndex=20Top=3120Width=1095EndBegin VB.OptionButton optBinCaption="Binary"Height=375Left=3600TabIndex=19Top=2640精选合同范本Width=855EndBegin VB.CommandButton cmdPutCaption="upload"Height=495Left=3480TabIndex=18Top=3840Width=975EndBegin VB.CommandButton

37、 cmdGetCaption="download"Height=495Left=3480TabIndex=17Top=3360Width=975EndBegin ComctlLib.TreeView TreeView1Height=2655Left=360TabIndex=16Top=2640Width=3015_ExtentX=5318_ExtentY=4683_Version=327682Style=7Appearance=1EndBegin VB.FileListBox File1Height=1890Left=6960TabIndex=15Top=3120Width

38、=1575EndBegin VB.DirListBox Dir1Height=2115Left=5040TabIndex=14Top=3120Width=1695End精选合同范本Begin VB.DriveListBox Drive1Height=315Left=5040TabIndex=13Top=2640Width=3495Caption="Passive FTP syntax"Height=255Left=3120TabIndex=12Top=1800Width=2175EndBegin VB.CommandButton cmdDisconnectCaption=&

39、quot;Disconnect"Height=495Left=5760TabIndex=11Top=1680Width=1815EndBegin VB.CommandButton cmdConnectCaption="Connect"Height=495Left=360TabIndex=10Top=1680Width=2175Height=375IMEMode=3 'DISABLELeft=7200PasswordChar="*"TabIndex=9Top=1080Width=1095EndBegin VB.TextBox txtUse

40、rHeight=375Left=4680TabIndex=7精选合同范本Top=1080Width=1095EndBegin VB.TextBox txtServerHeight=375Left=1680TabIndex=4Text="Input IP here"Top=1080Width=1455EndBegin VB.CommandButton cmdClosehOpenCaption="Close Internet Session"Height=495Left=2280TabIndex=3Top=240Width=1935EndBegin VB.T

41、extBox txtProxyHeight=435Left=7200TabIndex=1Top=240Width=1095EndBegin VB.CommandButton cmdInternetOpenCaption="Start Internet Session"Height=495Left=240TabIndex=0Top=240Width=1935Left=2280Top=5160_ExtentX=1005_ExtentY=1005BackColor=-2147483643MaskColor=12632256_Version=327682EndBegin VB.La

42、bel label4精选合同范本Caption="Password:"Height=255Left=6000TabIndex=8Top=1080Width=855EndBegin VB.Label Label3Caption="User Name:"Height=255Left=3360TabIndex=6Top=1080Width=975EndBegin VB.Label Label2Caption="FTP Server Name:"Height=375Left=120TabIndex=5Top=1080Width=1335End

43、Begin VB.Line Line1X1=240X2=8520Y1=840Y2=840EndBegin VB.Label Label1Caption= "TIS Compatible Proxy (No CERN):"Height=375Left=4440TabIndex=2Top=360Width=2535EndEndAttribute VB_Name = "fmVBFTPJR"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_Predecla

44、redId = TrueAttribute VB_Exposed = FalseDim bActiveSession As Boolean精选合同范本Dim hOpen As Long, hConnection As LongDim dwType As LongDim EnumItemNameBag As New CollectionDim EnumItemAttributeBag As New CollectionPrivate Sub Form_Load()bActiveSession = FalsehOpen = 0hConnection = 0chkPassive.Value = 1o

45、ptBin.Value = 1dwType = FTP_TRANSFER_TYPE_BINARYDim imgI As ListImageTreeView1.ImageList = ImageList1TreeView1.Style = tvwTreelinesPictureTextEnableUI (False)End SubPrivate Sub Form_Unload(Cancel As Integer)cmdClosehOpen_ClickEnd SubPrivate Sub cmdInternetOpen_Click()txtServer.Text = ""If

46、Len(txtProxy.Text) <> 0 ThenhOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PROXY, txtProxy.Text, vbNullString,0)ElsehOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString,0)End IfIf hOpen = 0 Then ErrorOut Err.LastDllError, "InternetOpen"EnableU

47、I (True)End SubPrivate Sub cmdClosehOpen_Click()If hConnection <> 0 Then InternetCloseHandle (hConnection)If hOpen <> 0 Then InternetCloseHandle (hOpen)精选合同范本hConnection = 0hOpen = 0bActiveSession = FalseClearTextBoxAndBagEnableUI (False)End SubPrivate Sub cmdConnect_Click()If Not bActiv

48、eSession And hOpen <> 0 ThenIf txtServer.Text = "" ThenMsgBox "Please enter a server name!"Exit SubEnd IfDim nFlag As LongIf chkPassive.Value ThennFlag = INTERNET_FLAG_PASSIVEElsenFlag = 0End IfhConnection = InternetConnect(hOpen, txtServer.Text, INTERNET_INV ALID_PORT_NUMB

49、ER, _ txtUser, txtPassword, INTERNET_SERVICE_FTP, nFlag, 0)If hConnection = 0 ThenbActiveSession = FalseErrorOut Err.LastDllError, "InternetConnect"ElsebActiveSession = TrueEnableUI (CBool(hOpen)FillTreeViewControl (txtServer.Text)FtpEnumDirectory ("")If EnumItemNameBag.Count = 0

50、 Then Exit SubFillTreeViewControl (txtServer.Text)End IfEnd IfEnd SubPrivate Sub cmdDisconnect_Click()bDirEmpty = TrueIf hConnection <> 0 Then InternetCloseHandle hConnectionhConnection = 0ClearBagbActiveSession = FalseEnableUI (True)精选合同范本End SubPrivate Sub ClearTextBoxAndBag()txtServer.Text

51、= ""txtUser.Text = ""txtPassword.Text = ""txtProxy.Text = ""ClearBagEnd SubPrivate Sub ClearBag()Dim Num As IntegerFor Num = 1 To EnumItemNameBag.CountEnumItemNameBag.Remove 1Next NumFor Num = 1 To EnumItemAttributeBag.CountEnumItemAttributeBag.Remove 1Next Nu

52、mEnd SubPrivate Sub FillTreeViewControl(strParentKey As String)Dim nodX As NodeDim strImg As StringDim nCount As Integer, i As IntegerDim nAttr As IntegerDim strItem As StringIf EnumItemNameBag.Count = 0 And strParentKey = txtServer.Text ThenExit SubEnd IfnCount = EnumItemAttributeBag.CountIf nCount = 0 Then Exit SubFor i = 1 To nCountnAttr = EnumItemAttributeBag.Item(i)strItem = EnumItemNameBag(i)If nAttr = FILE_A TTRIBUTE_DIRECTORY ThenstrImg = "closed"ElsestrImg = "leaf"End IfNext精选合同范本nodX.EnsureVisibleEnd SubPrivate Sub cmdGet_Click()Dim bRet As Bo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论