| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:vfp调用wininet能否实现ftp断点续传?
取消只看楼主 加入收藏
chaodai2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-5-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
vfp调用wininet能否实现ftp断点续传?
项目要求实现ftp服务器上传下载大文件断点续传功能,参考了许多资料都不得要领,
试用了myfll也不能实现断点续传,按照网上的wininet api 资料也实现上传下载但也无法断点续传每次都是从头开始。
FTP Server是Serv-U_15.2的应该是支持的,用FlashFXP测试也确实可以的。
查阅了FTP协议规范说是要先执行"REST 开始位置值" 再执行"STOR/RETR 文件名" 上传或下载文件,但无论如何尝试都不能成功。
参考资料:https://
其中ftpCommand方法是可以发送ftp命令“REST 1000”到ftpserver,服务器也确实返回了执行成功信息,但ftpCommand本身返回了执行错误(GetLastError 错误码 12003),之后的 RETR 也不再响应了。
ftp服务器日志如下:
[5] Thu 17Aug23 22:21:59 - (000136) Connected to x.x.x.x (Local address 192.168.0.240)
[6] Thu 17Aug23 22:21:59 - (000136) 220 Test FTP Server
[2] Thu 17Aug23 22:21:59 - (000136) USER test
[6] Thu 17Aug23 22:21:59 - (000136) 331 User name okay, need password.
[2] Thu 17Aug23 22:21:59 - (000136) PASS xxxxx
[5] Thu 17Aug23 22:21:59 - (000136) User test logged in
[6] Thu 17Aug23 22:21:59 - (000136) 230 User logged in, proceed.
[2] Thu 17Aug23 22:21:59 - (000136) TYPE A
[6] Thu 17Aug23 22:21:59 - (000136) 200 Type set to A.
[2] Thu 17Aug23 22:21:59 - (000136) PASV
[6] Thu 17Aug23 22:21:59 - (000136) 227 Entering Passive Mode (192,168,0,240,196,47)
[2] Thu 17Aug23 22:21:59 - (000136) REST 1000
[6] Thu 17Aug23 22:21:59 - (000136) 350 Restarting at 1000. Send STORE or RETRIEVE.
[2] Thu 17Aug23 22:21:59 - (000136) QUIT
[6] Thu 17Aug23 22:21:59 - (000136) 221 Goodbye!
[5] Thu 17Aug23 22:21:59 - (000136) Closing connection for user test (00:00:00 connected)

问题困扰很久,恳求有实现过该功能的坛友指点迷津
搜索更多相关主题的帖子: 断点 执行 ftp USER Test 
2023-08-18 17:29
chaodai2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-5-11
收藏
得分:0 
根据ftp协议定义断点续传分2步
1、REST 1000 &&是先指定传输位置
2、RETR abc.txt &&下载abc.txt文件,从1000字节处开始下载剩余的

我现在就是卡在第一步就不成功。

调用wininet.dll的ftpcommand函数定义如下
DECLARE INTEGER FtpCommand IN wininet;
    INTEGER   hConnect,;
    INTEGER   fExpectResponse,;
    INTEGER   dwFlags,;
    STRING    lpszCommand,;
    STRING  @ dwContext,;
    INTEGER @ phFtpCommand
Parameters:
hConnect [in] HINTERNET handle returned from a call to InternetConnect
fExpectResponse [in] BOOLvalue that indicates whether or not the application expects a response from the FTP server
dwFlags [in] Unsigned long integer value that contains the flags that control this function
lpszCommand [in] Pointer to a string value that contains the command to send to the FTP server
dwContext [in] Pointer to an unsigned long integer value that contains an application-defined value
phFtpCommand [out] Pointer to an HINTERNET handle that will be created if a valid data socket is opened
Return value:
Returns TRUE if successful, or FALSE otherwise

资料来源:https://  
2023-08-18 22:13
chaodai2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-5-11
收藏
得分:0 
Netsuite.dll使用要先注册,容易因windows更新补丁而失效,希望可以直接使用windows API免注册也方便做进度条。
2023-08-20 09:47
快速回复:vfp调用wininet能否实现ftp断点续传?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030347 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved