《第14章VC网络编程.ppt》由会员分享,可在线阅读,更多相关《第14章VC网络编程.ppt(25页珍藏版)》请在三一办公上搜索。
1、第14章 VC网络编程,为了方便用户进行Internet编程,VC中还提供了WinInet,它提供了HTTP、FTP、Gopher等应用层协议的客户端接口,便于进行简单的Internet客户端程序的开发。本章将主要介绍WinSock接口、WinSock MFC类的使用方法,简单的网络通信程序开发以及使用WinIne开发Internet客户端程序的方法。,14.1 网络通信及开发基础,网络通信是指应用程序需要与网络中其他系统上的应用程序之间进行通讯。进行网络编程的开发,必须要了解网络通信的基本概念。,14.1.1 TCP/IP协议,实现网上通信的应用程序,无论是通过因特网还是小型的局域网,一般都
2、采用同样的原则、通过类似的功能实现网络通信。(具体内容请参照本书),14.1.2 TCP/IP协议,TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中实现,因此用户编程一般不涉及这方面的内容。编程时,编程界面有两种形式:由内核直接提供的系统调用;使用以库函数方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通过核外的应用程序才能实现,具体来讲就是使用套接字(socket)来实现。,14.1.3 Windows Sockets基础,Windows下网络编程的规范Windows Sockets是Windows下得到广泛
3、应用的、开放的、支持多种协议的网络编程接口。从1991年的1.0版到1995年的2.0.8版,经过不断完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成为Windows网络编程的事实上的标准。,14.1.4 客户机/服务器模式,在TCP/IP网络中,两个进程间的相互作用的主机模式是客户机/服务器(Client/Server)模式。该模式的建立基于以下两点:非对等作用和通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式。(具体内容请参照本书),14.2 基本网络通信开发,CAsyncSocket类封装了异步、非阻塞So
4、cket的基本功能,用它做常用的网络通信软件很方便。对于异步、非阻塞的概念本节暂不讨论,而是围绕CAsyncSocket类,讲解基本的面向连接的流套接字和非连接协议的数据报套接字的创建与使用。,14.2.1 CAsyncSocket类及常用成员函数的使用,在MFC中,为套接口提供了相应的类CAsyncSocket和CSocket,CAsyncSocket提供基于异步通信的套接口封装功能,CSocket则是由CAsyncSocket派生,提供更加高层次的功能。本节将结合套接字的创建和使用过程,介绍CAsyncSocket类的主要成员函数。(具体内容请参照本书),14.2.2 使用WinSock进
5、行无连接的通信,WinSock提供了对UDP(用户数据报协议)的支持,通过UDP协议可以向指定IP地址的主机发送数据,同时也可以从指定IP地址的主机接收数据,发送和接收方处于相同的地位没有主次之分。,14.2.3 无连接通信实例,本节给出一个使用CAsyncSocket类实现无连接的数据通信的简单实例。在服务器端,服务启动后,创建的Socket向客户端固定的端口定时(间隔2秒)发送一个计数值;在客户端,创建的Socket从服务器端固定的端口定时(间隔2秒)接收数据,并显示数据。(具体内容请参照本书),14.2.4 使用WinSock进行有连接的通信,WinSock提供了对TCP(传输控制协议)
6、的支持,通过TCP协议可以与指定IP地址的主机建立,同时利用建立的连接可以双向的交换数据。使用CAsyncSocket类实现有连接数据交换也不复杂,与无连接通信不同,有连接的通信中必需有一方扮演服务器的角色等待另一方(客户方)的连接请求,所以服务器方需要建立一个监听套接字,然后在此套接字上等待连接。当连接建立后会产生一个新的套接字用于通信。而客户方在创建套接口后只需要简单的调用连接函数就可以创建连接。,14.2.5 有连接通信实例,本节给出一个使用CSocket类实现有连接的数据通信的简单实例。在服务器端,服务启动后,创建的Socket开始监听客户端的连接请求,并处于闭塞状态(无法进行其他操作
7、),当收到客户端的连接请求时,创建一个通信套接字,定时(间隔2秒)向外发送一个计数值,同时关闭监听套接字。,14.3 网络程序设计与开发,对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手。通过前面的介绍相信读者对网络程序的总体结构有了直观的认识。在本节,将重点介绍Socket事件机制,通过它深入网络程序开发。,14.3.1 网络程序的一些概念,网络程序往往涉及到很多概念,诸如同步/异步、阻塞/非阻塞等。初学者往往感到迷惑不清,下面对此作一下简单介绍。,14.3.2 Socket事件,在实际应用中,程序员一般不直接使用CAsyncSocket类,而是自己定义他们的派生类,主
8、要原因就是需要捕获Socket激活的事件,如Socket连接建立、数据接收完毕等。(具体内容请参照本书),14.3.3 Socket事件的激发控制,默认的情况下,CAsyncSocket类会调用所有的可重载函数,而CSocket类一个也不调用。在实际应用中,往往需要控制Socket对特定事件函数的调用,可采用如下两种方式实现对这些事件函数激发的控制。(具体内容请参照本书),14.3.4 Socket信息的获取与处理,有时,应用程序需要知道Socket的状态信息,如对方程序的网络地址和端口、Socket是否处于阻塞状态等。,14.3.5 网络程序开发实例,本节将给出一个使用CAsyncSocke
9、t类的事件机制实现一个简单的C/S结构的网络程序实例。客户端与服务器建立连接后,可以向服务器端发送信息,而服务器收到消息后,将消息回发至客户端,在客户端的列表框中显示。通过本实例,掌握CAsyncSocket类的事件的触发与处理操作。,14.4 WinInet开发Internet客户端程序,前面介绍了Winsock网络编程,Winsock提供了Windows应用程序之间实现TCP/IP通信的标准。为了简化客户/服务者(Client/Server)模式进行Internet编程,VC中还提供了WinInet类,它提供了HTTP、FTP、Gopher等应用层协议的客户端接口。,14.4.1 MFC
10、WinInet开发包,Miscrosoft所提供的WinInet开发包是作为ActiveX技术中的一部分,后来Miscrosoft对WinInet API进行了包装并提供了相应的MFC类。WinInet开发包的作用是提供了对HTTP、FTP、Gopher协议的支持,使开发者在开发Internet程序时避免编写底层协议相关的代码。此外WinInet很多功能都是与IE有联系的,比如说,可以使用IE中的设置和使用IE缓存中的数据。,14.4.2 WinInet开发客户端程序的流程,使用WinInet进行客户端开发的一般流程可分为建立连接、发送请求、关闭连接三个阶段,,14.4.3 WinInet开发
11、HTTP客户端程序实例,本节将给出一个使用WinInet通过HTTP协议读取网上文件的实例,通过本实例,了解使用WinInet开发客户端程序的基本过程。,14.5 简单的Web浏览器开发,在Miscrosoft操作系统中,用户可以使用Internet Explorer或Netscape Navigator浏览HTML网页。而在Visual C+中,也提供了对HTML网页编程的支持,可以通过VC编程,实现自己的浏览器。在Visual C+中,可以有两种方法实现Web浏览器:使用WebBrowser控件和CHtmlView视图类。其中WebBrowser控件为一个ActiveX控件,其具体应用本书不作讨论。,14.5.1 CHtmlView视图类简介,在Visual C+6.0中,提供了CHtmlView视类,它派生于CFormView类,该类提供了常用的浏览器编程功能。实际上,CHtmlView类就是在CFormView对象上放了一个WebBrowser控件,把WebBrower控件打成一个易于使用的包,使其非常适合MFC文档/视图结构的应用。,14.5.2 浏览器开发实例,本节将使用CHtmlView类实现一个类似IE的简单的网页浏览器,通过本实例,掌握CHtmlView类的使用。(具体内容请参照本书),