我上网搜索后发现实现方法有以下几种,请高人看看思路对不,有些问题希望高人能帮忙解答:1.使用 winsock api ,用socket实现,得两个连接,一个是命令连接, 一个是数据连接.流程是:
--> socket 连接服务器(用Serv-U)的21端号
<-- 服务器返回连接成功的信息
--> 发送用户名
<-- 返回用户名正确
--> 发送密码
<-- 服务器返回登录成功
--> 设置传输方式 type I\r\n
<-- 响应传输方式设置
--> 设置模式 pasv\r\n
<-- 返回数据连接的IP和PORT
--> 创建新socket连上面的IP和PORT
<-- 连接成功,发送 appe localfilename  remotefilename\r\n
问题就出在appe命令处,服务器上会生成名字为localfilename remotefilename 的空文件,而不是将 本地的 localfilename 续写到 服务器的 remotefilename 文件后面,请高手指点该怎么做?是不是在两个文件名之间加什么转义字符?还是用别的命令续传文件?2.使用 wininet api ,用InternetConnect()建立连接 ,用FtpFindFirstFile()和 InternetFindNextFile()找到要续传的文件,用 FtpOpenFile()打开该文件,用InternetWriteFile()直接在该文件中续写内容。高人觉得这种方法可行不?

解决方案 »

  1.   

    问题关键是:
        文件指针定位没大问题,只是运行 appe 命令时不支持 appe localfile remotefile 格式,我将本地文件改成与服务器文件同名,使用 appe filename 格式,可以对 .jpg图片 进行续传,对文本文件不能续传。
    高手认为是什么原因?请指教!
      

  2.   

    flashget、迅雷 的源码看看就知道了,谁有啊
      

  3.   

    看file zilla client的代码
    append命令也许只有一个参数,要看是什么FTP Server