设为首页 加入收藏

TOP

4.3.1 CSocketFile类的使用
2013-10-07 13:02:13 来源: 作者: 【 】 浏览:62
Tags:4.3.1 CSocketFile 使用

4.3  FTP文件处理

在FTP客户端编程(www.cppentry.com)中,用户可以通过一些类或者函数,获得服务器的文件目录和实现上传、下载文件等功能。例如,在MFC中,CSocketFile类和CArchive类是在FTP编程(www.cppentry.com)中很重要的两个类。本节将重点介绍这两个类的一些用法和示例。

4.3.1  CSocketFile类的使用

MFC中定义了一个在套接字编程(www.cppentry.com)中使用的类:CSocketFile类;它可以充分发挥CSocket类的特性。CSocketFile类是CFile的派生类,它主要用来在Windows Sockets编程(www.cppentry.com)中发送和接收序列化数据(如结构体数据)。通过把CSocketFile类对象、CArchive对象和CSocket创建的套接字对象联系起来,可以实现数据的加载(接收)和存储(发送)。

1.构造函数

在实际编程(www.cppentry.com)中,将CSocketFile对象和CSocket对象直接联系起来可以用CSocketFile类的构造函数来完成。CSocketFile类构造函数原型如下:

  1. CSocketFile::CSocketFile(CSocket* pSocket, 
    BOOL 
    bArchiveCompatible = TRUE ); 

参数pSocket是一个CSocket对象;bArchiveCompatible指示该文件对象是否与一个CArchive对象一起使用,默认为true。该构造函数可以有两种调用方式。例如:

  1. CSocket  *m_clientsocket=new CSocket;               //创建套接字  
  2. CSocketFile *m_sockfile=new CSocketFile(&m_clientsocket);  
  3.                                 //创建一个与
    m_clientsocket关联的文件指针对象 

上述代码中,是通过new关键字调用CSocketFile类的构造函数创建一个指针对象的。第二种调用方式如下:

  1. CSocket  *m_clientsocket=new CSocket;           //创建套接字  
  2. CSocketFile  m_sockfile(&m_clientsocket);  
  3.                                     //创建一个
    与m_clientsocket关联的文件对象 

这两种调用方式都需要在实例化对象m_sockfile之后,再与CArchive对象相关联,并由CArchive对象指定其属性。属性取值如表4.3所示。代码如下:

  1. CArchive ar(&m_sockfile, CArchive::load| CArchive::store);   
  2.                                 //创建与m_sockfile相
    关联的串行化对象并指定属性  
  3. ...                             //省略部分代码  
  4. ar.Close();                     //关闭串行化对象 

注意:在这里使用完串行化对象ar以后,需要使用函数CArchive::Close()关闭,确保数据(命令)及时存储(发送)。

2.CSocketFile 与CFile进行比较

CSocketFile类虽然派生于CFile类,但是它却屏蔽掉了函数CFile::Open()。也就是说,用户在实际编程(www.cppentry.com)时,不能使用CSocketFile对象直接去调用函数Open()打开文件。

注意:由于在本章实例中,有关文件的操作大多是由CArchive类进行的。因此,关于CSocketFile类的其他函数请参看MSDN,这里不再进行赘述。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.1.2 FTP数据传输模式 下一篇4.1.1 FTP数据结构

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: