MFC下的FTP VC++

来源:互联网 发布:地域详细数据 编辑:程序博客网 时间:2024/06/08 15:48

         最近用到了ftp,刚开始没接触过,百度了好大一阵子。弄明白了它就是一个文件传输协议,就像TCP/UDP一样,按照协议就可以对文件进行操作。但是它的服务端微软已经弄好了,只需要开启就好,客户端也给我们留了接口,就等我们自己调用了。

      它也分局域网和外网,局域网就是我们在学校的机房里的时候,老师会让我们到服务器上去下载东西,只要在IE里输入  ftp://192.168.11.22之类的就可以转到操作的页面,我们只需要粘贴复制就OK了。

       首先我们需要创建ftp服务器,把要共享的文件弄进去,win7下会有自带的,但需要我们自己去开启,百度下就会有一堆的图文教程。

        后来发现了MFC下本来就专门定义了一些进行ftp操作的类,非常的方便,就几句话就可以实现对文件的各种操作,主要是CFtpConnection这个类,下面的这个链接是微软对它的说明http://technet.microsoft.com/zh-cn/library/2kywsafk.aspx,多看下这个就对他有一点了解了。下面是个小DEMO:

 

 

//首先在服务器端的FTP主目录下放一个Config.txt的文本文件,
    CInternetSession session;
    //连接FTP Server
    CFtpConnection *TempFtp=session.GetFtpConnection("dbs","Administrator","123321");
    //下载文件
    TempFtp->GetFile("Config.txt","e:\\ee.txt",TRUE,FILE_ATTRIBUTE_NORMAL,FTP_TRANSFER_TYPE_ASCII,1);
    //处理文件
    FILE *fp;
    fp=fopen("e:\\ee.txt","a+");
    fprintf(fp,"\nAdd Line\n");
    fclose(fp);
    //上传文件
    TempFtp->PutFile("e:\\ee.txt","Config.txt",FTP_TRANSFER_TYPE_ASCII,1);
    //关闭连接
    TempFtp->Close();
    session.Close();

    我也是看着这个例子来尝试的,最终成功的实现链接并对文件进行相应的操作。

 

后来因为需要,需要连接外网的ftp,其实还是一样的,只是服务器开启的时候多几个步骤。这个也可以自己百度教程。 关键是今下午调试的时候发现程序老是卡掉,但如果只是进行简单的替换文件名字的操作还是可以的,如果要进行文件下载就会卡,现在还没有解决,正在想办法,难道是网速的问题。。。哪位兄弟知道解决方法了说话啊。。。。

 

呵呵 ,今天这个周日没白过来啊。终于知道不能对文件进行操作的原因了,原来如果只是在自己电脑上弄ftp的话是不会出现防火墙之类的事情的,连接外网时就出现这种东东了。其实我也没怎么弄明白呢,连接分被动连接和主动连接。但是我百度下,MFC下也没有说主动连接和被动连接的事情啊,但是在Linux下貌似有不少人说到了这个问题,看来自己太不认真了,最后看了下面这篇文章才知道。http://over140.blog.51cto.com/2543800/583031

后来又到微软官方上看了下才确定啊。

http://technet.microsoft.com/zh-cn/library/kzey6f41.aspx

不管怎么说,算是解决了这个问题,以后在慢慢的学习它,同时也会把知道的点滴写在这上面。。。

今天早上过来,由于ftp操作外网的文件速度比较慢,就放弃了。最后决定用dll。。。