CSocketFile类

4.3  FTP文件处理

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

4.3.1  CSocketFile类的使用

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

1.构造函数

在实际编程中,将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()。也就是说,用户在实际编程时,不能使用CSocketFile对象直接去调用函数Open()打开文件。

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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值