回 帖 发 新 帖 刷新版面

主题:目前本人需求的是用VFP远程传输文件,暂不考虑用VFP操作远程的数据库或数据表了。

连续发了几个相关的帖子,还是没有得到理想答案,觉得可能是本人没有表达清楚。
目前本人需求的是用VFP远程传输文件,暂不考虑用VFP操作远程的数据库或数据表了。
用VFP远程传输文件本人已经实现过,只是要通过OUT LOOK邮箱。觉得那种方法很笨拙,还要给用户注册邮箱,邮箱还有一些限制。如果能通过互联网象QQ那样直接发收文件,就足以满足本人目前的需求了。
在互联网上打开远程的数据库或数据表并读写数据,估计难度要大,且暂时并不需要,以后需要时再考虑。
敬请各位大师相助,在下不胜感激。

回复列表 (共17个回复)

11 楼

团结起来到明天,英特纳雄耐尔就一定要实现!

12 楼


楼主是想用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 楼

hw2007name老弟你好:
    不瞒你说,上次你发的那个FTP类我下载了两次,由于没看懂就放到一边了。过了几天也不知道怎么又删除了。看了你的这帖,我又找到那帖重新下载,调入VFP大致浏览一下,才知道是个非常好的东西,才知道老弟在远程传输方面是非常有研究的,如果能用明白,应该是最理想的方案。
    周日和周一我手头有点非常紧的活,如果忙完我就开始套用你那个类,套用过程中有弄不懂的地方还要向老弟请教。论坛里我已经拜访过几位朋友了,愿于老弟也能早日成为生活中的朋友。我没有找到你的QQ号,我的QQ号是:630709721 甬车,希望你见后加我,以便多交流,多向你请教。

14 楼

其实用远程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 楼

我把通过远程数据库自动升级的源码片断取出来大至如下,代码量很少的,还可以实现异步传送,两个人不必同时在线。如果楼主要实现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 楼

多谢红狐老弟的详细讲述,忙过这几天详细研究你的方案时还要向你多请教。
愿我们成为好朋友!

17 楼

新的一天更美好!VFP的明天更美好!

我来回复

您尚未登录,请登录后再回复。点此登录或注册