在VFP中实现FTP远程通信

Author: 安立 Date: 2001年 51期

?牐犇壳癡FP仍然受到很多程序员的喜爱,特别是在中小规模的单机、局域网的前台应用软件开发中得到了广泛的使用。下面介绍一下如何使用FCREATE()、FWRITE()、FCLOSE()三个函数,在VFP中实现FTP远程传送文件的方法。
  ?牐燜CREATE(cFileName[,nFileAttribute])函数的功能是创建并打开低级文件,其中参数cFileName指定要创建的文件名称,在文件名前可以加入驱动器指示符和路径,如果没有包括驱动器指示符或路径,则在默认目录下创建该文件。NFileAttribute指定文件的属性,可选值为0…7,0为读写方式(默认值),其它参见VFP的随机帮助。返回值为数值型,创建成功返回文件句柄编号,可以把该编号赋给内存变量,从而可以在其他的低级文件函数用此内存变量访问该文件,如果不能创建文件,则返回-1。
  ?牐燜WRITE(cFileHandle,cExpression[,nCharactersWritten])函数的功能是向低级文件函数打开的文件或通信端口写入字符串,其中参数nFileHandle为文件句柄号,或要写入字符串的通信端口,cExpression指定FWRITE()函数写入字符表达式,nCharatersWritten为写入文件或通信端口的cExpression中的字符的数目,返回值为0,表示操作失败。
  ?牐燜CLOSE(,nFileHandle)函数的功能是刷新并关闭低级文件函数打开的文件或通信端口。
  ?牐犗旅媪谐雒莆狹YFTP()的自定义函数的源代码,该函数首先调用已有的拨号连接,待用户确定线路连通后,创建ftp连接进行文件传输,完成后,关闭ftp通信端口,并提示用户断开拨号连接。
  ?牐爁unction myftp
  ?牐?***调用拨号网络中名为“我的连接”的拔号连接,如用户为专线或局域网连接,删除该段
  ?牐爎un /N rundll32.exe rnaui.dllRnaDial 我的连接
  ?牐爄f messagebox('通信线路是否连通,开始传送文件吗?',1)=2
  ?牐爓ait wind [取消传送文件,请断开连接线路!] nowait
  ?牐爎eturn -1
  ?牐爀ndif
  ?牐?*** 创建FTP连接
  ?牐爁p=fcreate(“ftpcp”,0)
  ?牐爄f fp=-1
  ?牐爓ait wind [不能创建FTP连接,请检查网络配置] nowait
  ?牐爎eturn -1
  ?牐爀ndif
  ?牐?*** FTP用户登录,192.168.0.1为远程FTP服务器的IP
  ?牐爏s=[open 10.168.0.1]+chr(13)+chr(10)+[ftpusrname]+chr(13)+chr(10)+[usrpasswd]+chr(13)+chr(10)
  ?牐爄f fwrite(fp,ss)=0
  ?牐爓ait wind [FTP用户登录失败] nowait
  ?牐爁close(fp)
  ?牐爎eturn -1
  ?牐爀ndif
  ?牐?***将本地文件(c:\autoexec.bat)传送到远程服务器
  ?牐爏s=[bin]+chr(13)+chr(10)+[put c:\autoexec.bat] +chr(13)+chr(10)
  ?牐爄f fwrite(fp,ss)=0
  ?牐爓ait wind [上传文件失败] nowait
  ?牐爁close(fp)
  ?牐爎eturn -1
  ?牐爀ndif
  ?牐?*** 将远程服务器上的文件(remofile.txt)下载到本地机的默认目录下
  ?牐爏s=[get remofile.txt]+chr(13)+chr(10)+[bye]+chr(13)+chr(10)
  ?牐爄f fwrite(fp,ss)=0
  ?牐爓ait wind [下载文件出错] nowait
  ?牐爁close(fp)
  ?牐爎eturn -1
  ?牐爀ndif
  ?牐?***关闭FTP通信端口
  ?牐爁close(fp)
  ?牐爓ait wind [文件传送成功,请断开连接线路!] nowait
  ?牐爎eturn 0
  ?牐牶得鳎菏褂肍CREATE()函数创建FTP通信端口,FWRITE()函数写入FTP命令行实现本地机向远程服务器的上传及下载文件,FCLOSE()函数关闭FTP通信端口。用户根据自己的需要将上述的代码取舍修改后,加至程序或事件代码中,即可在VFP中实现FTP的远程通信。