第18章网络及通信开发_第1页
第18章网络及通信开发_第2页
第18章网络及通信开发_第3页
第18章网络及通信开发_第4页
第18章网络及通信开发_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第1818章章 网络及通信开发网络及通信开发本章将介绍网络和通信方面的开发知识。与网络相关的有本章将介绍网络和通信方面的开发知识。与网络相关的有WinInet编程、编程、ISAPI编程、编程、MAPI编程。与通信相关的有编程。与通信相关的有串口编程、串口编程、WinSock编程、邮槽编程和管道编程。因为都编程、邮槽编程和管道编程。因为都是与网络通信相关的知识,所以这些技术之间有许多相是与网络通信相关的知识,所以这些技术之间有许多相似支持,读者应该注意对比学习。似支持,读者应该注意对比学习。18.1 WinInet18.1 WinInet编程编程随着信息时代的到来,互联网程序已经成为应用程序的

2、主流随着信息时代的到来,互联网程序已经成为应用程序的主流形式。通过形式。通过Internet客户端可以访问互联网中的各种资源客户端可以访问互联网中的各种资源。MFC通过通过WinInet技术实现对技术实现对Internet客户端编程的知客户端编程的知识。识。WinInet技术包括对技术包括对FTP协议和协议和HTTP协议等不同协协议等不同协议的支持。本节介绍有关议的支持。本节介绍有关WinInet的编程方法。的编程方法。18.1.1 WinInet API18.1.1 WinInet API函数的概述函数的概述WinInet API是一组是一组API函数,用来创建符合函数,用来创建符合Inte

3、rnet协议的协议的客户端程序。它们封装了对各种网络协议的封装,包括客户端程序。它们封装了对各种网络协议的封装,包括FTP协议、协议、Internet协议等各种不同协议的支持。通过协议等各种不同协议的支持。通过Internet客户端,用户可以从互联网中获取各种信息。例客户端,用户可以从互联网中获取各种信息。例如,可以从如,可以从FTP站点下载资源,可以调用天气信息的站点下载资源,可以调用天气信息的WebSerivice获取最新的天气预报,可以通过网络商店购获取最新的天气预报,可以通过网络商店购买需要的各种物品。使用买需要的各种物品。使用WinInet API函数用户不需要处函数用户不需要处理各

4、种不同网络协议的实现细节,使开发人员将精力集理各种不同网络协议的实现细节,使开发人员将精力集中在业务逻辑上。中在业务逻辑上。18.1.2 WinInet18.1.2 WinInet类概述类概述虽然使用虽然使用WinInet()函数可以实现对函数可以实现对Internet站点的访问,但站点的访问,但是为了充分利用是为了充分利用C+语言的特性,语言的特性,VC 6.0将有关将有关Internet的的API函数封装到一组函数封装到一组WinInet MFC类中,简化了类中,简化了Internet程序的开发。程序的开发。18.1.3 HTTP18.1.3 HTTP编程编程HTTP(Hypertext

5、Transfer Protocol)协议,超文本传输协)协议,超文本传输协议,是互联网上最常用的通信协议,是建立在议,是互联网上最常用的通信协议,是建立在TCP/IP协协议层上的传输协议。本小节结合前面介绍的议层上的传输协议。本小节结合前面介绍的WinInet API函数和函数和WinInet类,讲解如何实现类,讲解如何实现HTTP编程。编程。18.1.4 FTP18.1.4 FTP编程编程FTP(File Transfer Protocol)协议,文件传输协议,用来)协议,文件传输协议,用来实现文件的双向传输。本小节结合前面介绍的实现文件的双向传输。本小节结合前面介绍的WinInet API

6、()函数和函数和WinInet类,讲解如何实现类,讲解如何实现FTP编程。本示例编程。本示例显示指定显示指定FTP站点根目录下的文件名。站点根目录下的文件名。18.2 MAPI18.2 MAPI编程编程MAPI(Messaging Application Programming Interface),),消息应用编程接口,是用来支持消息的应用程序编程接消息应用编程接口,是用来支持消息的应用程序编程接口。本节概要的介绍口。本节概要的介绍MAPI的体系结构和开发接口,并讲的体系结构和开发接口,并讲解如何使用解如何使用MAPI编写发送电子邮件的程序。编写发送电子邮件的程序。18.2.1 MAPI18

7、.2.1 MAPI概述概述MAPI是支持邮件功能的一组是支持邮件功能的一组API()函数。使用函数。使用MAPI可以发可以发送、接收和处理邮件消息,并且可以在程序中使用送、接收和处理邮件消息,并且可以在程序中使用API()函数定义邮件主题、编写邮件内容和为邮件添加附件。函数定义邮件主题、编写邮件内容和为邮件添加附件。反方向反方向MAPI提供了邮件提醒通用接口。提供了邮件提醒通用接口。18.2.2 18.2.2 使用使用MAPIMAPI编写电子邮件程序编写电子邮件程序上一小节介绍了上一小节介绍了MFC向导中继承了邮件发送的功能,但是向导中继承了邮件发送的功能,但是MFC向导并没有完全继承向导并没

8、有完全继承MAPI的接口函数。因此,本节的接口函数。因此,本节以一个示例讲解如何使用以一个示例讲解如何使用MAPI的接口函数来实现邮件发的接口函数来实现邮件发送程序。送程序。18.3 18.3 串口编程串口编程串口是工业控制中经常遇到的主机与外设间的通信方式。本串口是工业控制中经常遇到的主机与外设间的通信方式。本节介绍有关串口的编程。主要包括与串口相关的节介绍有关串口的编程。主要包括与串口相关的Windwos API函数、串口编程的事件驱动机制、同步和异函数、串口编程的事件驱动机制、同步和异步工作模式、编写串口程序的过程以及步工作模式、编写串口程序的过程以及MSCOMM串口控串口控件。件。18

9、.3.1 18.3.1 串口编程基本概念串口编程基本概念串行端口简称串口,是计算机与外设之间的数据传输方式之串行端口简称串口,是计算机与外设之间的数据传输方式之一。从字面上理解,串口是数据串行传输的方式,因此一。从字面上理解,串口是数据串行传输的方式,因此与并口相比,串口的传输速度相对要慢,串口比较可靠与并口相比,串口的传输速度相对要慢,串口比较可靠。因此,串口是目前工业上常用的数据传输方式,通过。因此,串口是目前工业上常用的数据传输方式,通过串口可以连接鼠标、手持仪等各种设备。串口可以连接鼠标、手持仪等各种设备。18.3.2 18.3.2 申请串口资源申请串口资源要使用串口进行通信,首先需要

10、申请串口资源,也就是打开要使用串口进行通信,首先需要申请串口资源,也就是打开串口。在串口。在Windows中串口作为文件来操作,因此申请串中串口作为文件来操作,因此申请串口资源使用口资源使用CreateFile()函数就可以。但是串口又与普通函数就可以。但是串口又与普通的文件不同,因此在使用的文件不同,因此在使用CreateFile()函数打开串口时,函数打开串口时,需要注意需要注意18.3.3 18.3.3 配置串口参数配置串口参数申请完串口资源后,需要对串口进行参数配置,对其进行配申请完串口资源后,需要对串口进行参数配置,对其进行配置后才可以正常读写数据。置后才可以正常读写数据。VC 6.

11、0中提供了设备控制块中提供了设备控制块DCB结构来进行串口参数配置。结构来进行串口参数配置。18.3.4 18.3.4 同步读写数据同步读写数据申请串口资源并配置完成后,就可以从串口读写数据了。首申请串口资源并配置完成后,就可以从串口读写数据了。首先讲解一种简单的读写工作模式先讲解一种简单的读写工作模式同步读写模式。所同步读写模式。所谓同步读写模式是指,在进行数据读写操作时,操作阻谓同步读写模式是指,在进行数据读写操作时,操作阻塞在那里,直到完成操作后才会返回。从串口读写数据塞在那里,直到完成操作后才会返回。从串口读写数据与从文件中读写数据步骤是类似的,也是通过与从文件中读写数据步骤是类似的,

12、也是通过ReadFile()函数和函数和WriteFile()函数来实现。函数来实现。18.3.5 18.3.5 异步读写数据异步读写数据上一小节介绍了同步读写数据,虽然同步读写数据的方法比上一小节介绍了同步读写数据,虽然同步读写数据的方法比较简单,但是因为同步读写数据时会阻塞操作,这样会较简单,但是因为同步读写数据时会阻塞操作,这样会造成数据丢失等错误现象。例如,当发送大量数据时,造成数据丢失等错误现象。例如,当发送大量数据时,这是有大量数据到达串口,则可能发生来不及读取的情这是有大量数据到达串口,则可能发生来不及读取的情况,就被后面到达串口的数据覆盖了,造成接收数据的况,就被后面到达串口的

13、数据覆盖了,造成接收数据的不完整性。这就出现了异步读写数据的方式。不完整性。这就出现了异步读写数据的方式。18.3.6 MSCOMM18.3.6 MSCOMM控件控件微软提供了微软提供了MSCOMM控件实现串口操作。使用控件实现串口操作。使用MSCOMM控件编写串口程序的优点是可以简化程序代码量。控件编写串口程序的优点是可以简化程序代码量。18.4 Windows Socket18.4 Windows Socket编程编程Windows套接字是开放的网络编程接口,主要完成网络环境套接字是开放的网络编程接口,主要完成网络环境中的数据传输功能。本节将介绍中的数据传输功能。本节将介绍Windows

14、Sockcet的基本的基本概念、概念、Windows Socket API()函数、函数、MFC对对Windows Socket的封装,并以示例演示如何使用的封装,并以示例演示如何使用Windows Socket API和和MFC Socket类编写网络通信程序。类编写网络通信程序。18.4.1 Windows Socket18.4.1 Windows Socket概述概述Windows Sockets是一组通信规范。是一组通信规范。Windows Sockets规范是规范是Windows平台下定义的兼容二进制数据传输的网络编程平台下定义的兼容二进制数据传输的网络编程接口,是基于接口,是基于B

15、SD UNIX Sockets的实现。的实现。Windows Sockets规范包括规范包括BSD格式的格式的Sockets()函数和函数和Windows()扩扩展函数。符合展函数。符合Windows Sockets规范的应用程序可以与任规范的应用程序可以与任何兼容何兼容Windows Sockets API的网络程序进行数据通信。的网络程序进行数据通信。18.4.2 Windows Socket API18.4.2 Windows Socket API函数函数Windows Socket规范定义了一组套接字函数,来实现规范定义了一组套接字函数,来实现Socket通信功能,定义了一组域名处理、

16、通信协议的数据库函通信功能,定义了一组域名处理、通信协议的数据库函数。为了与数。为了与Windows编程模型和编程模型和Windows Socket规范一规范一致,微软提供了一组扩展的套接字函数。致,微软提供了一组扩展的套接字函数。18.4.3 Windows Socket MFC18.4.3 Windows Socket MFC类类为了简化为了简化Socket编程,充分利用编程,充分利用C+的特性,的特性,MFC提供了两提供了两个支持个支持Socket的类的类CAsyncSocket和和CSocket类。类。CAsyncSocket类一对一地封装了类一对一地封装了Windows Socket

17、s API。CSocket类提供了从类提供了从CArchive对象中序列化对象中序列化Sockets数据的数据的功能。功能。18.4.4 Windows Socket MFC18.4.4 Windows Socket MFC示例示例上一小节介绍了上一小节介绍了Windows Socket MFC的知识,本小节以一的知识,本小节以一个示例讲解如何使用个示例讲解如何使用Windows Socket MFC编写编写Socket程程序。程序分为服务器端程序和客户端程序两部分。序。程序分为服务器端程序和客户端程序两部分。18.5 18.5 邮槽邮槽邮槽类似于生活中的邮政递送,是单向的数据传输通道。邮邮槽

18、类似于生活中的邮政递送,是单向的数据传输通道。邮槽通信进程间将要发送的数据内容放置在邮槽中,由对槽通信进程间将要发送的数据内容放置在邮槽中,由对端程序从邮槽中读取数据,并分析处理邮槽数据。本节端程序从邮槽中读取数据,并分析处理邮槽数据。本节介绍邮槽的使用方法,包括邮槽的工作机制、创建邮槽介绍邮槽的使用方法,包括邮槽的工作机制、创建邮槽的方法、向邮槽写数据的方法、从邮槽读数据的方法,的方法、向邮槽写数据的方法、从邮槽读数据的方法,并以一个示例讲解如何操作邮槽。并以一个示例讲解如何操作邮槽。18.5.1 18.5.1 邮槽工作机制邮槽工作机制邮槽是实现进程间通信(邮槽是实现进程间通信(IPC,In

19、terProcess Communications)的一种方式。邮槽程序可以通过邮槽)的一种方式。邮槽程序可以通过邮槽向其他进程发送数据。邮槽的所有者可以随时从邮槽中向其他进程发送数据。邮槽的所有者可以随时从邮槽中获取数据。邮槽间的通信时可以跨机器的。邮槽使用的获取数据。邮槽间的通信时可以跨机器的。邮槽使用的传输方式是数据报,基本上数据报是一种非可靠的数据传输方式是数据报,基本上数据报是一种非可靠的数据传输方式。传输方式。18.5.2 18.5.2 创建邮槽创建邮槽要使用邮槽实现进程间通信,首先需要创建邮槽。创建邮槽要使用邮槽实现进程间通信,首先需要创建邮槽。创建邮槽的过程与打开文件的过程相似

20、。只是邮槽是由邮槽服务的过程与打开文件的过程相似。只是邮槽是由邮槽服务器调用器调用CreateMailslot()函数创建。函数创建。18.5.3 18.5.3 向邮槽写数据向邮槽写数据邮槽客户机要向邮槽发送数据,则需要打开邮槽后,调用邮槽客户机要向邮槽发送数据,则需要打开邮槽后,调用WriteFile()函数向邮槽写入数据。写入完成后,需要调用函数向邮槽写入数据。写入完成后,需要调用CloseHandle()函数关闭邮槽句柄。函数关闭邮槽句柄。18.5.4 18.5.4 从邮槽读数据从邮槽读数据邮槽服务器要从邮槽接收数据,需要调用邮槽服务器要从邮槽接收数据,需要调用CreateMailslot创创建邮槽,然后不停的调用建邮槽,然后不停的调用ReadFile从邮槽中读取数据。从邮槽中读取数据。18.6 18.6 管道管道上一节介绍的邮槽技术是单向的数据传输机制,而管道技术上一节介绍的邮槽技术是单向的数据传输机制,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论