基于WinInet的FTP应用 基于WinInet的FTP应用

基于WinInet的FTP应用

  • 期刊名字:西安工程科技学院学报
  • 文件大小:149kb
  • 论文作者:曲双为,马柯
  • 作者单位:西安工程大学
  • 更新时间:2020-06-12
  • 下载次数:
论文简介

西安工程科技学院学报Journal of Xi'an University of Engineering Science and Technology第20卷第4期(总80期)2006年8月Vol 20. No 4(Sum No. 80)文章编号:1671-850X(2006)04-0486-04基于 WinInet的FTP应用曲双为,马柯(西安工程大学机电学院,陕西西安710048)摘要:探讨通过 Internet访问企业內部局域网的数据问题.给出了在VB环境下,基于 WinInetd开发FTP应用的方法.阐述了文件异步传输的实现手段,并给出了关键的实现代码.本系统经过客户测试证明是安全、稳定、可靠的关键词:VB; WinInet;FTP应用中图分类号:TP311.52文献标识码:A0引言随着计算机技术的发展以及计算机技术在企业信息化管理中的应用,如何对企业的信息进行有效的管理,使信息在企业的各个环节合理地流动显得非常重要.为此,笔者给客户开发了一套主要应用于局域网内的数据库信息管理软件.客户可以不在单位内的局域网内,例如在家中或囯内外任何其他地方,只要计算机能够与 Internet连接就可以取得单位局域网内服务器上的数据对于许多中小企业来说,一般不具备专门的数据专线来进行数据的传输,如果传输的数据量不大、要求传输速度不高、数据的实时性不强,也没有使用专线的必要个Internet客户端程序的目的是通过Internet协议,如:HTTP、FTP等来存取网络数据源(服务器)的信息.客户端程序可以访问服务器获得数据,甚至是与服务器交换信息. Internet客户端程序可以通过外部网络( Internet)或内部网络(一般为 Intranet)访问服务器.通过使用 Internet客户端程序来存取网络数据,满足没有数据专线的企业进行数据的传输需求.在 Internet上租用FTP空间来存储客户所需的数据,通过 Internet客户端程序将局域网内的数据定期经过筛选、加密、压缩后上传FTP服务器.客户随时从FTP服务器上下载数据,然后经过解密、解压缩后将数据导入到本地的数据库中,功能类似于计算机升级病毒库对于向FTP上传、下载数据要采用的方法,设计人员要作出选择.第一种方法采用第三方FTP软件或操作系统自带的软件完成上传、下载,用户自己指定I地址、用户名、密码来访问FTP服务器;第二种方法就是开发人员独立开发一套基于FTP协议的文件传输软件,由单位局域网內的计算机定时向FTP站点上传数据,具有下载期限、在任何地点的计算机终端都可以从指定的FTP站点上下载数据,并自动整合到本地的计算机数据库中.对于用户来说,第一种方案使用起来繁琐、效率低、保密性差,对用户的计算机操作水平要求较高,而第二种方案完全避免了第一种方案旳缺点,并且保证了数据库信息管理软件系统的整体性,所以采用第二种方案来实施V凵中国煤化工1开发FTP客户端程序的一般步骤CNMHG为了开发 Internet客户端程序. Windows提供了专门的win32 Internet扩展接口,也就是 WinInet.收稿日期:2006-06-01通讯恨钓齡(1968-),男,河北省献县人,西安工程大学副教授 E-mail: qushuangwei fangzhi.ce第4期基于 WinInet的FTP应用487win32Internet扩展提供了对普通Internet协议的访问,这些协议包括HTTP、FTP和Gopher.Gopher已经渐渐淡岀.借助于 WinInet编程接口,开发人员不必去了解 Winsock、TCP/IP和特定 Internet协议的细节就可以编写出高水平的Internet客户端程序.WinInet为几种协议(HTTP、FTP和Gopher)提供了统一的函数集,也就是win32API接口.利用这些统一的函数集,简化了针对HTTP、FTP等协议的编程,从而轻松地将Internet集成到自己的应用程序中.底层协议的转换(如从FTP到HTTP)只要对源代码稍作修改就可以完成(见表1).使用 WinInet提供的API函数.文件传输协议(FTP)是IP世界的核心协议. WINDOWS已经在 WinInet.dl中为软件开发人员提供了FTP开发的功能.这个DLL是与 Internet Explorer和其他一些内容集成在一起的,处理有关FTP协议的低级任务2表1开发FTP应用的一般步骤设置环境初始化调用 InternetOpen函数建立一个与服务器的FTP连接InternetConnect对象CD到FTP服务器的一个新目录用 SetCurrentDirectoryFind第一个FTP目录中的文件FindFile, OpenURL函数返回一个只读资源对象枚举所有可获得的资源,Find下一个FTP目录中的调用 FindNextfile直到返回 FALSE.Find下一个文件文件,Find下一个资源如果文件没找到,返回 FALSE打开 FindFile或 FindNextFile找到的文件调用 Open File,参数为 FindFile或 FindNextFile返回的文件名读文件,以读方式打开FTP文件用Read使用你指定的缓冲读指定的字节数写FTP文件,以写方式打开FTP文件调用 Write,使用你指定的缓冲写指定的字节数改变客户端在服务器上的目录调用 Setcurrent Directory进入新的目录获取客户端在服务器上的当前目录调用 GetCurrentDirectory获取目录信息检查FTP目录是否正确A Get Current Directory e Get Current Directory AsURI返回目录名字服务器目录或返回目录的URL删除 Findfile或 FindNextFile找到的文件Remove用 FindFile或 FindNextfile返回的文件自动清除打开的句柄的连接2FTP客户端基本传输功能的实现2.1通过调用 InternetOpen函数设置环境参数 lAccess Type:指定是直接与某一主机相连还是使用代理服务器进行连接.调用是这样的:Inglnet= InternetOpen("My FTP Test, 1, vbNullString, vbNullString, 0)Inglnet为0表示函数调用失败,如果调用成功,则 Inglnet可以作为句柄的值传递给 Internet Connect函数2.2通过调用 Internet connect函数与主机连接hInternet session: InternetOpen调用返回的句柄值sServerName:要连接的FTP服务器的IP地址或主机名n ServerPort:指示与哪一个端口连接,0表示使用默认端口21USername和 pAssword分别传递用户名和囗令Inglnet Con= Internet Connect (IngInet, ftp. microsoft, com.0.',mv(a163. com, 1,0,0)IngInetCon为0表示函数调用失败,如果调用成功,则中国煤化工值传递给 FtpGet file2.3用 FtpGet file函数完成从FTP服务器上读取文件爿CNMHGfTp Session: Internetconnect调用返回的句柄值lpszRemote file:FTP服务器上的文件名; lpszNew File:在本地要创建的文件名fFaillfexists:表示可以替换本地相同的文件,1表示如果本地文件已经存在则取消本次操作.dwFlags:1表据sC传输文件,2表示用二进制传输文件488西安工程科技学院学报第20卷bIro= FtpGetfile( IngInet con,“my.txt”,"d:\my.txt”,0,0,1,o)如果函数调用成功, bIro为True,反之为 False.2.4调用 FtpPutFile函数上传文件bInRC= FtpPut File(Inglnet Con, App. path &. "\MyMDB rar","Invoice. rar",1. 0)如果函数调用成功,bnRC为True,反之为 False需要注意的是,匿名用户无权在FTP服务器上创建文件.所以要确定用来与FTP服务器连接的用户帐号要有创建文件的权限否则 Ftp Put File函数调用就会返回 False通过以上函数的使用可以完成最基本的文件上传、下载功能,但是在文件传输过程中的一些变化的信息无法获取,使得用户无法获知传输何时结束、当前传输状态如何等.要取得这些信息,必须采用文件异步传输3文件异步传输的实现wininet提供了接口 FtpGetFile实现从ftp服务器下载文件;也提供了接囗 FtpPutFile实现把文件上传到ftp服务器上.通过这两个接口,能够完成基本的FTP文件传输客户端功能在下载FTP服务区上的远程时,为了使界面更加友好以及增强用户的控制权,软件界面需要显示以下的相关信息:①当前文件的总字节数;②已下载的字节数;③剩余字节数;④已下载百分比;⑤已经耗时;⑥剩余时间;⑦平均传输速度其中的关键参数是①当前文件的总字节数和②已下载的字节数,其他参数可以根据这两个参数再结合时间因素计算出来3.1通过 FtpOpenfile和 FtpGet File Size取得远程文件大小通过 FtpGet Filesize的返回值就是要下载的远程文件字节数,其中 hFile为 FtpOpen file返回的句柄值hFile= FtpOpen File (IngInetCon, Remote File, GENERIC READ, 1,0)If hfile 0 Then exit functionIng File Size- FtpGet FileSize (hFile, INumberOfBytes Read)SB. Panels(2).Text="总字节:"8. Format( IngFilesize/024,"#,0")8."KBProgress Barl Min= 1: Progress Barl. Max= CLng(Ing File Size/1024)3.2异步传输实现方法(I对于所提到的另外一个关键参数:已下载的字节数,要想不断地取得该参数,必须要采取文件异步传输的方法.否则,前台程序无法取得控制权.可以利用 Internet ReadFile函数来实现Do While truebRet= InternetReadFile(hFile, sRead Buffer(0), 2048, INumberOfBytes Read)ReDim Preserve sReadBuffer(o To INumberOfBytes Read -1)Put intFH,, sReadBufferSB. Panels(3). Text ="EF#i: " 8. Format(pub BytesRecieved/1024,"# 0")SB. Panels(4). Text ="i*E "8. pub BytesRecieved Ing FileSize 100oop3.3异步传输实现方法(Ⅱ)利用 Internet Set Status Callback建立回调函数Public Function Ftp Callback Status( By val hInternet中国煤化工 text as lon,ByvldwInternet Status As LongHCNMHGBy val lpvStatusInfo As Long, By Val dw StatusInfoLength As Long) As longcBuffer= Space s(dw StatusInfolength)Select case dwlnternet statusCaseiXFEENET STATUS SENDING REQUEST第4期基于 WinInet的FTP应用489MoveMemory dwRead, By val lpvStatusInfo, dw StatusInfoLengthSelect Case Current StateCase ftP uploadingMsg="已上传:"8. Format( pub Bytes Sent/1024,"#,0")8."KBEnd selectCase INTERNET STATUS RESPONSE RECEIVEDMoveMemory dw Read, By Val lpvStatusInfo, dw StatusInfolengthSelect case current stateCase FTP DOWNLOaDINgMsg="已下载字节:"8. Format(pub_ BytesRecieved/1024,"#,0")8."KBEnd selectEnd SelectEnd function4结束语本程序经过客户在国内几个地点和在美国的测试全部运行正常,下载数据正确,得到了客户的肯定但在上传FTP站点数据的选取上,从数据库的角度来说,还需要再进行优化,减少冗余数据的传输,以达到提高文件传输效率的目的参考文献1]武新华.VC∴NET管理信息系统开发案例[M].西安:西安电子科技大学出版社,2005:145-146]李博轩.VC6.0网络及 Internet开发指南[M].北京:清华大学出版社,2000:300-304Developing FTP Application on the basis of winInetQU Shuang-wei, MA Ke( School of Mechanical and Electrical Engineering, Xi an Polytechnic University, Xi an 710048, China)Abstract: To get the intranet data through internet, the paper gives a method of developing the ftp ap-plication on the basis of wininet dynamic link library file with the micro-soft visual basic language environment. It laies emphasis on the means of realizing file asynchronous transfer and the key code is givenWith the test of users. it is safe and stableKey words VB; WinInet; FTP Application编辑:董军浪;校对:武晖H中国煤化工CNMHG

论文截图
上一条:AIR应用技术
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。