选择显示字体大小

在pb中实现ftp传输

---- 在用pb进行开发时常常需要用到ftp功能,最典型的应用就是将数据窗口中的数据生成txt文件,然后将此数据文件用ftp发送到远程服务器上去。由于pb本身并未提供任何ftp的功能,因此想在pb中进行ftp传输,只能应用pb以外的资源。以下是笔者在pb开发中总结出来的几种方法。

---- 1. 使用外部命令

---- 这种方法就是在pb程序中运行windows中自带的ftp命令。具体做法是在程序中生成一个.bat文件,将要运行的ftp命令写到此文件中,再运行这个批处理文件。假设ftp服务器ip为 202.114.67.2,用户名为user,口令12345,现在要将本地c:\temp\下的t00001.txt文件上传到服务器的\txtdata\目录下去。则pb代码如下:

integer li_bat  //文件名指针
li_bat = fileopen(path_ftp+'get_file.bat',
linemode!, write!, lockwrite!, replace!)

filewrite(li_bat, 'cd c:\temp\')
filewrite(li_bat, 'ftp 202.114.67.2')
filewrite(li_bat, 'user)
filewrite(li_bat, '12345')
filewrite(li_bat, 'put t00001.txt
\txtdata\t00001.txt')
filewrite(li_bat, 'bye')
filewrite(li_bat, 'exit')
fileclose(li_bat)
run(path_ftp+'get_file.bat',minimized!)
messagebox("提示信息","数据上报完毕")

---- 此方法的优点是简单易行,既不要调用api函数,也不需加入ole。缺点一是要运行外部命令,将会打开dos窗口,显得不够和谐;二是数据传输成功与否无法判断,在编程时不好控制。

---- 2. 使用inte.net transfer控件

---- inte.net transfer控件是网络编程中非常常用的控件。它支持目前inte.net上使用最为广泛的两种协议,即http和ftp。在windows98中它是由系统自带。有关此控件的详细资料请查看相关书籍。这里我们只使用它的ftp功能。在pb中加入一个与此控件的ole,取名ole_1,并按以下数据设置此控件的属性(注意不是ole_1的属性),表中没有列出的属性请用缺省值:

属性            值           说明
protocol        2          指定用ftp协议
remotehost      202.114.67.2
username        user1
password        12345

---- inte.net transfer控件支持两种数据传输方式,即同步传输方式和异步传输方式。同步传输方式在数据传输时会阻塞程序,此功能是通过调用该控件的openurl方法来实现的;而异步方式则不会阻塞程序,它通过调用控件的execute方法来实现。同步方式虽然易于控制,但它只能下载文件,不能上传文件,这使得它在实际的应用受到限制。要实现数据的上传下载,只能使用此控件的异步传输方式。要完成上例中的功能,在pb程序中加入以下语句即可:

ole_1.object.execute("","put c:
\temp\t00001.txt   \txtdata\t00001.txt")

---- 同理,如果要将服务器上的文件下载到本地,在程序中加入即下语句:

ole_1. object.execute("","get \txtdata\t00001.txt  c:\temp\t00001.txt")

---- inte.net transfer控件的功能很强大,利用它足以制作一个功能比较完善的ftp工具,而且它是操作系统自带的,在编程时不需要注册新的控件。但根据笔者的使用经验,此控件也有两个不能忽视的缺点,其一、它的数据上传下载是异步传输的,在每次只运行一个ftp命令时尚可,如果一次运行多个ftp命令就会出错。比如说,我们想先进入服务器的\file目录,再上传数据,这样程序应如下:

ole_1.object.execute("","cd \file\")
ole_1.object.execute("","put
c:\temp\t00001.txt   \txtdata\t00001.txt")
---- 由于execute方法是异步执行的,它不等第一个语句完成就开始执行第二条语句,这样可能服务器还来不及将当前目录转到\file下数据已经开始上传,造成错误。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons