我只可以提示提示一些代码, 查查 MSDN 的 ftp 类, 1、生成CInternetSession变量。
   CInternetSession ses;2、打开FTP连接。
   CFtpConnection* pFTP=ses.GetFtpConnection(
                "ftp.microsoft.com","user","password",port,FALSE);3、打开文件。
   CInternetFile* pF=pFTP->OpenFile("abc.exe");
   简单的是使用   CFtpConnect::GetFile(...) ; 
   CFtpConnection::PutFile(...) ;
   可以拷贝文件。
4、读取文件   pF->Read(...)高级用法:1、查找文件,列文件目录。(FTP Tree Sample in VC5)   CFTPFileFind类可以列出当前目录下的所有文件,和CFileFind相同。2、断点续传。   使用CInternetFile::Seek(...)重定位指针。其它:   同样的CHttpConnection的用法也很类似。

解决方案 »

  1.   

    可能要用到CSocketFile类吧,我也不懂,我刚学
      

  2.   

    用CSocket可以完成,不过双方都要有ServerSocket和ClientSocket至少两个socket以进行握手.你得作一个协议.举个例子:先传出一个小的结构struct DataHeader{
        UINT dwSize;//本结构长度
        TCHAR filename[_MAX_PATH];
        TCHAR message[200];//oicq附的消息长度
    }在对方收到上述结构后,一方面初始化对方的用户显示知道要传来什么.及多长。由用户决定是否接受,在点击接受或拒绝后,回送一个(确认,收到的长度).struct DataAck{
        WORD dwSize ;//消息长度
        DWORD id;//最好加一个消息id.
        BOOL bAccept;//定义是否接收
        UINT dwRecvSize;//收到的长度
    }在收到确认,如果长度和发送的相等,就可以放心传输了file的内容.双方都打开文件,
    一边读文件发数据,一边收数据并写入文件.如果真正要做好还要做很多错误处理。比如中途连接中断,这时要重新建立连接,并
    进行断点续传.计时器的设置(如果Send老是返回0,超过一定时间),用户中途中断.等等
    这时还要规定相应的握手协议.
      

  3.   

    以上都不是,FTP是文件上传用文件格式对OICQ来说那样太慢也不太可取.
    再说那是服务器和客户机间的.CSocket是应答方式也不行.只有用CSocketFile类了
    但是你须保证服务器和客户机都是支持MFC的就行,注意CSOCKETFILE 不同CFile 用法的地方!!
      

  4.   

    我做了一个比OICQ还快。
    要的话MAIL :[email protected]