VisualC++网络编程案例实战之简易网络文件传输器.pptxVIP

  • 50
  • 0
  • 约1.45万字
  • 约 64页
  • 2017-04-10 发布于湖北
  • 举报

VisualC++网络编程案例实战之简易网络文件传输器.pptx

第10章 简易网络文件传输器 网络文件传输是一种基于网络平台的文件操作。通过简易网络文件传输器可以将需要操作的文件通过网络在两台计算机上实现数据异地传输功能。例如,现在非常流行的P2P(点对点)传输功能就是通过网络实现用户异地下载或上传文件。本章将讲解使用socket和CFile类在两台主机上传输文件的方法。 10.1 CFile类 在Windows操作系统下编程操作文件时,可以使用MFC类库中的CFile类,也可以使用Win32 API函数进行编程。对于用户而言,CFile类比较简单容易使用,所以大部分用户在文件操作编程方面比较偏向于该类。但是使用API函数编程可以使用户更加了解程序底层的一些原理。 10.1.1 构造函数 在MFC中,关于文件操作的类有很多。其中,最为常用的一个是CFile类,这个函数几乎涵盖了所有的文件操作功能。首先,CFile类的构造函数原型如下: 其中,第一个构造函数没有参数,表示在生成文件对象时才调用,此时该对象并未绑定任何文件。如果用户希望构造文件的同时绑定指定文件,那么生成该文件对象以后,需要调用函数CFile::Open()打开指定文件即可。在MFC中,函数Open()的原型如下: 该函数的作用是打开指定文件,并且将该文件与一个文件对象相关联。 参数如下: 参数lpszFileName表示打开的文件名称,该名称可以是一个文件的相对路径或者是绝对路径(表示完整路径)。 参数nOpenFlags表示将以何种方式打开文件。文件打开方式如表10.1所示。 参数pError表示打开文件时,所发生的异常情况。默认值为NULL。 例如,用户调用没有参数的构造函数创建文件对象,并且需要将该对象与指定文件绑定在一起再打开文件。代码如下: CFile file; file.Open(C:\例子.txt,CFile:modeReadWrite); 如果用户使用带有参数的构造函数创建文件对象,表示在对象创建的同时,已经与指定文件相关联了。函数中参数意义如下: 参数lpszFileName表示需要操作的文件路径,该路径可以是绝对路径,也可以是相对路径。例如,打开路径为“C:\例子.txt”的文件,可以将路径直接指定为绝对路径“C:\例子.txt”。如果路径指定为“.\例子.txt”,那么程序将会在其所在目录下查找该文件。若文件不存在,则会报错。 参数nOpenFlagss指定文件的打开方式,如表10.1所示。 表10.1 文件打开方式 打 开 方 式 意 义 CFile::modeCreate 创建新文件并覆盖原有文件 CFile:: modeCreate|CFile::modeNoTruncate 创建文件但不覆盖原有文件 CFile::modeRead 以只读方式打开文件 CFile::modeWrite 以只写方式打开文件 CFile::modeReadWrite 以可读写方式打开文件 CFile::ShareDenyNone 不允许其他进程读写文件 CFile::ShareDenyRead 不允许其他进程读文件 CFile::ShareDenyWrite 不允许其他进程写文件 CFile::ShareExclusive 允许其他进程读写文件 用户在代码中可以调用带有参数的构造函数创建文件对象,并且将文件的打开方式指定为可读可写。代码如下: CFile file(“C:\例子.txt”,CFile:modeReadWrite); //创建文件对象 用户通过上面的代码,可以创建一个文件对象,并与指定文件相关联,为其设置了打开方式为读写“CFile::modeReadWrite”。 对于用户而言,以上两种构造函数在使用上均可以达到目的。只是在打开文件时,前者需要显式地调用函数Open()打开文件,而后者则在文件对象创建的同时打开文件,属于隐式。 10.1.2 读写文件 当用户创建文件对象成功以后,可以调用相关的操作函数对其进行读写操作。在MFC中,进行文件读写操作的函数分别是CFile类的函数Read()和Write()。原型分别如下: virtual UINT Read(void* lpBuf, UINT nCount); //读文件 virtual void Write(const void* lpBuf, UINT nCount); //写文件 两个函数的参数及其意义均相同,如下所示: 参数lpBuf表示指向缓冲区的指针。 参数nCount表示需要操作的字节数。 其中,读文件的函数Read()如果调用成功,则会返回实际读取到的字节数目。用户在程序中使用这两个函数对文件进行操作,代码如下: 01 ... //省略部分代码 02 char *text[100]; //定义字符数组

文档评论(0)

1亿VIP精品文档

相关文档