主题:目前本人需求的是用VFP远程传输文件,暂不考虑用VFP操作远程的数据库或数据表了。
北京惬意
[专家分:1330] 发布于 2010-03-15 17:11:00
连续发了几个相关的帖子,还是没有得到理想答案,觉得可能是本人没有表达清楚。
目前本人需求的是用VFP远程传输文件,暂不考虑用VFP操作远程的数据库或数据表了。
用VFP远程传输文件本人已经实现过,只是要通过OUT LOOK邮箱。觉得那种方法很笨拙,还要给用户注册邮箱,邮箱还有一些限制。如果能通过互联网象QQ那样直接发收文件,就足以满足本人目前的需求了。
在互联网上打开远程的数据库或数据表并读写数据,估计难度要大,且暂时并不需要,以后需要时再考虑。
敬请各位大师相助,在下不胜感激。
最后更新于:2010-03-15 19:31:00
回复列表 (共17个回复)
11 楼
北京惬意 [专家分:1330] 发布于 2010-03-19 10:11:00
团结起来到明天,英特纳雄耐尔就一定要实现!
12 楼
hw2007name [专家分:4790] 发布于 2010-03-20 23:02:00
楼主是想用API实现FTP功能啊,上次你的贴中我发的一个我自己做的FTP类就是全部用API函数的,没其它东西。你说没看懂我可以简单介绍一下:
SET CLASSLIB TO "FTP.VCX"
oFTP=CREATEOBJECT("MYFTP")
&&oFTP.CONNECT("FTP服务器域名或IP地址及端口(默认端口21)","FTP服务器用户名","密码")
IF !oFTP.CONNECT("127.0.0.1:21","FTP服务器用户名","密码")
? "连接FTP服务失败!"
RETURN .F.
ENDIF
&&其实此联系方法的参数也可以直接设置此类的三个属性值:servername,username,userpassword,如果设置了以上三个属性也就不必在上面写入参数直接调用就是了
IF !oFTP.CONNECT()
? "连接FTP服务失败!"
RETURN .F.
ENDIF
&&如果连接成功,此类的属性nhinternet将记录连接成功的句柄号
oFTP.createftpdir("目录名称")&&在FTP服务器上创建目录,但必须要你的登录用户有这个权限。
在远程操作FTP服务器时,要随时知道当前FTP服务器的当前路径在那里,这样才便于控制文件上传下载工作,要不如果FTP服务器目录结构复杂点,你上传的文件在那里去了都不知道。
所有“GET”开头的方法都是从FTP服务器上取得信息。upfiletoftp()方法是向服务器上传文件或整个目录。其实我把此类的每个自定义方法都写了说明,只是没单独写成帮助文件。此类我测试过(不过是局域网内,用网上下载的FTP服务器创建工具建的FTP服务器),都运行正常。
13 楼
北京惬意 [专家分:1330] 发布于 2010-03-21 00:51:00
hw2007name老弟你好:
不瞒你说,上次你发的那个FTP类我下载了两次,由于没看懂就放到一边了。过了几天也不知道怎么又删除了。看了你的这帖,我又找到那帖重新下载,调入VFP大致浏览一下,才知道是个非常好的东西,才知道老弟在远程传输方面是非常有研究的,如果能用明白,应该是最理想的方案。
周日和周一我手头有点非常紧的活,如果忙完我就开始套用你那个类,套用过程中有弄不懂的地方还要向老弟请教。论坛里我已经拜访过几位朋友了,愿于老弟也能早日成为生活中的朋友。我没有找到你的QQ号,我的QQ号是:630709721 甬车,希望你见后加我,以便多交流,多向你请教。
14 楼
红狐 [专家分:60] 发布于 2010-03-22 00:10:00
其实用远程SQL数据库传文件很简单的,很方便的,我给c/s软件做直动升级功能,刚开始也不想用数据库,好象开始时用myf1论坛的一个MYDLL.DLL,感觉ftp慢得不得了,有的时候下一半文件是坏的,程序挂了。后来用邮箱,也觉得实在不稳定。每个程序都只用一两个月就废弃了。
后来用SQLSERVER传文件就解决了所有烦恼 。装一个sqlserver服务器假设内网IP是192.168.0.3,在互联网那儿的硬件防火墙任选一个端口,假设是8976,指定防火墙8976端口tcp/ip映射到192.168.0.3的1433。这样全世界的客户端就可以访问这个sqlserver服务器了。连接串这样写是:“DRIVER=SQL Server; SERVER=218.86.xx.xxx,8976; UID=SA; pwd=xxxxxxx; DATABASE=XXXXXXXX”。我用这种方式实现全国的客户端访问sqlserver服务器几年了,都很稳定。
用sqlserver实现升级包,我是这样做的,在sqlserver建立一个text字段。客户端用 ctmp=filetostr("d:\升级包.RAR"),然后 ctmp 用 ? ctmp ,用SQL命令update到text字段。还原成文件时,把这个字段用 strtofile(字段名,"E:\升级包.RAR"),从此我很稳定的实现了各地客户端同步自动升级。这种方法真的比ftp、email舒服多了,几年都没有出事故。
15 楼
红狐 [专家分:60] 发布于 2010-03-22 00:31:00
我把通过远程数据库自动升级的源码片断取出来大至如下,代码量很少的,还可以实现异步传送,两个人不必同时在线。如果楼主要实现QQ那样传的话,也必须要申请一个固定IP做为中转服务器的,不然两个人都是动态IP,相互找不到对方。
*****************************上传程序段
upConn=Sqlstringconnect(c连接串)
crar=filetostr(czipfile) &&czipfile是要远程传送的文件
csql="UPDATE 系统设置 SET "+;
"最新版本名=?c最新版本名,"+;
"最新版本号=?c最新版本号,"+;
"最新版本日=?c升级时间,"+;
"禁用版本号=?c禁用版本号,"+;
"升级说明=?c升级说明,"+;
"升级路径m=?c升级路径M,"+;
"升级包=?crar"+;
"文件名='"+c目标文件名
nlet=SQLEXEC(upConn,csql)
nleg=sqldisconnect(upConn)
*****************************下载程序段
upConn=Sqlstringconnect(c连接串)
csql="select 最新版本名,最新版本号,最新版本日,禁用版本号,升级说明,升级路径m,升级包,文件名 from 系统设置 where 1=1"
nlet=SQLEXEC(upConn,csql,"下载")
nleg=sqldisconnect(upConn)
select 下载
=strtofile(下载.升级包,Cfilename)
USE IN 下载
16 楼
北京惬意 [专家分:1330] 发布于 2010-03-22 03:32:00
多谢红狐老弟的详细讲述,忙过这几天详细研究你的方案时还要向你多请教。
愿我们成为好朋友!
17 楼
北京惬意 [专家分:1330] 发布于 2010-03-26 07:31:00
新的一天更美好!VFP的明天更美好!
我来回复