设为首页 加入收藏

TOP

3.3.2 使用CSocketFile类
2013-10-07 15:55:37 来源: 作者: 【 】 浏览:85
Tags:3.3.2 使用 CSocketFile

3.3.2  使用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. //创建一个与m_clientsocket关联的文件指针对象  
  3. CSocketFile *m_sockfile = new CSocketFile(&m_clientsocket); 

在上述代码中,通过new关键字调用CSocketFile类的构造函数创建一个指针对象。第二种调用方式如下:
  1. CSocket  *m_clientsocket = new CSocket;           //创建套接字  
  2. CSocketFile  m_sockfile(&m_clientsocket); //创建与m_clientsocket关联的文件对象 

这两种调用方式都需要在实例化对象m_sockfile之后,再与CArchive对象相关联,并由CArchive对象指定其属性。具体代码如下:
  1. CArchive ar(&m_sockfile,  
  2. CArchive::load|CArchive::store);  //创建m_sockfile相关联的串行化对象并指定属性  
  3. ...                                     //省略部分代码  
  4. ar.Close();                        //关闭串行化对象 

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

(2) CSocketFile与CFile

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

因为本章实例中的文件的操作大多是由CArchive类实现的,所以关于CSocketFile类的其他函数请读者参阅MSDN,这里不再赘述。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.3.1 FTP编程(2) 下一篇3.3.3 使用CArchive类进行序列化..

评论

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

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)