wininet方式能实现ftp断点续传吗,怎么实现?

qeq2008 2009-03-30 11:21:10
网上有完整的ftp文件管理服务端和客服端工具的源码
只是都没有续传功能
也看到有文章介绍wininet 库本身不支持续传功能要修改其库文件才能实现
真是这样吗,那位高手帮帮忙急用!

谢过!
...全文
217 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyeweng 2009-03-31
  • 打赏
  • 举报
回复
是想在FTP服务器上实现断点续传的功能?
http://www.diybl.com/course/3_program/c++/cppsl/200815/95891.html

看不出来这是什么东西呀
要解决什么问题也不清楚
源程序是什么?
qeq2008 2009-03-31
  • 打赏
  • 举报
回复
对sdk的使用不熟
能提供下断点续传的例子吗!
bragi523 2009-03-31
  • 打赏
  • 举报
回复
1楼
tttk 2009-03-30
  • 打赏
  • 举报
回复
恩,2、3楼的方案都可以参考
oyljerry 2009-03-30
  • 打赏
  • 举报
回复
修改Wininet.dll实现FTP断点续传, 需要修改系统Wininet.dll
http://bbs.pediy.com/showthread.php?p=61151
cnzdgs 2009-03-30
  • 打赏
  • 举报
回复
自己记录断点信息,用FtpOpenFile、InternetSetFilePointer、InternetReadFile、InternetCloseHandle等函数下载。
qeq2008 2009-03-30
  • 打赏
  • 举报
回复
楼上真幽默
我就是在问应该如何修改。。。。
blackcat242 2009-03-30
  • 打赏
  • 举报
回复
这个找个已经实现的代码,修改下,自己增加断点续传的功能
qeq2008 2009-03-30
  • 打赏
  • 举报
回复
我也看到过修改wininet.dll的方案
不过不知道在哪里修改一下信息像是只有调试时才出现的吧:
debug 进入 psdk 的wininet.dll中的FTPOpenFile经过很多个小时的跟
踪以后发现
以下三个函数入口:




761BB256 and ebx,80000000h
761BB25C mov eax,761DE8F0h
………………………………………………………
761BB261 jne 761BB268
761BB263 mov eax,761DE8E8h
761BB276 call 761BC0A2

format("RETR %s");


761BC213 push edi
761BC214 mov edi,dword ptr [ebp+70h]
761BC217 push eax
761BC218 push 761DE9ECh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
761BC21D push edi
761BC21E push 0
761BC225 call 761BC1C3
format("TYPE %s");

761BC7F9 test eax,eax //没有用
761BC7FB jne 761BC89D //没有用
761BC801 push dword ptr [ebp+78h]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lpstrFileAtServer
761BC804 push 761DE93Ch
761BC809 push dword ptr [ebp+58h]
761BC80C call 761BC003
format("SIZE %s",lpstrFileAtServer)


修改DLL成 SIZE %s->REST %s



然后就是修改参数调用:
761BC7F9 85 C0 0F 85 9C 00 00 ?.?..
761BC800 00 FF 75 78

761BC7F9 test eax,eax //没有用
761BC7FB jne 761BC89D //没有用
761BC801 push dword ptr [ebp+78h]

的11个字节想办法修改成:、、?怎么改

761BC7F9 90 8B C5 05 50 01 00 ?..P..
761BC800 00 50 90 90

nop;
mov eax, ebp ;
add eax, 0x150 ;
push eax ;
nop;
nop;
希望高手能指导的详细些,谢了!
调用的DLL: .版本 2 .DLL命令 本地系统的连接状态, , "Wininet.dll", "InternetGetConnectedState" .参数 lpdwFlags, 整数型, 传址, 返回值 .参数 dwReserved, 整数型, , \\保留的参数 .DLL命令 打开Internet_, 整数型, "Wininet.dll", "InternetOpenA", , 返回Internet句柄 .参数 代理商名称, 文本型 .参数 存取类型, 整数型 .参数 代理名称, 整数型 .参数 代理地址, 整数型 .参数 标志, 整数型 .DLL命令 打开Internet地址_, 整数型, "Wininet.dll", "InternetOpenUrlA" .参数 Internet句柄, 整数型, , \\ InternetOpenA命令获取的Internet句柄 .参数 Url地址, 文本型, , \\指定要开始读取的URL。仅支持以ftp:,http:或https:开头的网址 .参数 头文本, 文本型 .参数 头文本长度, 整数型 .参数 标志, 整数型 .参数 定义值, 整数型 .DLL命令 HTTP查询信息, 整数型, "Wininet.dll", "HttpQueryInfoA" .参数 Internet请求句柄, 整数型 .参数 待查信息, 整数型 .参数 返回容器, 整数型, 传址 .参数 返回容器长度, 整数型, 传址 .参数 lpdwIndex, 整数型, 传址 .DLL命令 HTTP查询信息__, 整数型, "Wininet.dll", "HttpQueryInfoA" .参数 Internet请求句柄, 整数型 .参数 待查信息, 整数型 .参数 返回容器, 文本型, 传址 .参数 返回容器长度, 整数型, 传址 .参数 lpdwIndex, 整数型, 传址 .DLL命令 关闭Internet句柄, , "Wininet.dll", "InternetCloseHandle" .参数 handle, 整数型 .DLL命令 HTTP查询信息_, 整数型, "Wininet.dll", "HttpQueryInfoA" .参数 lpdwIndex, 整数型, 传址 .DLL命令 读Internet文件_, 整数型, "Wininet.dll", "InternetReadFile" .参数 Internet地址句柄, 整数型 .参数 数据缓冲区, 字节集 .参数 读取大小, 整数型 .参数 读取首地址, 整数型, 传址 .DLL命令 呼叫窗口函数地址_, 整数型, , "CallWindowProcA", , 消息信息传送给指定的窗口过程的函数。使用函数CallWindowsProc可进行窗口子分类。通常来说,同一类的所有窗口共享一个窗口过程。子类是一个窗口或者相同类的一套窗口,在其消息被传送到该类的窗口过程之前,这些消息是由另一个窗口过程进行解释和处理的。 .参数 子程序指针, 子程序指针, , 指向接收消息的窗口过程的句柄。 .参数 参数1, 整数型, , 指定消息类型。 .参数 参数2, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。 .参数 参数3, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。 .参数 参数4, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧