《第23章 网络编程基础.ppt》由会员分享,可在线阅读,更多相关《第23章 网络编程基础.ppt(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第23章 VC+网络编程基础网络编程是一门内容很广的专题,本章不可能详细将网络编程的所有知识都讲述完,本章主要就是提供网络编程的基本概念,为读者在后继章节的网络编程实例中,打下理论基础。本章的主要内容有:TCP/IP协议:读者将学到TCP/IP协议的基本理论。Windows Sockets基础:读者将学会Windows套接字的概念和进行相应的程序设计应该具备的理论知识。B/S模式和C/S模式:读者将学会当今主流的两种网络系统架构以及这两者的区别和应用方向。局域网技术:读者将学会在局域网内进行网络编程的一些程序设计技巧。23.1 TCP/IP协议简介TCP/IP协议并不完全符合OSI的七层参考模
2、型。主要在于历史原因方面,早在互联网建立的初期,TCP/IP已经被几个大的互联网公司所使用,后来才制定出了OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。如图23.1所示,该图所示是使用OSI的七层参考模型的A主机到B主机的数据传输。23.2 Windows Sockets基础Windows操作系统为开发人员在Windows环境下编写网络应用程序提供了Windows Socket SDK,即是Windows套接
3、字API(应用程序接口),而MFC类库则将这些API封装在几个类里,通过类对象来调用这些API。本节主要讲述套接字的原理和API函数的简介。23.2.1 套接字概述套接字是通信双方一种相互约定的通信方式和规则,在TCP/IP通信中,一般使用套接字的相关函数接口来完成通信过程。应用程序是在应用层的,而需要通信的应用程序使用了传输层的服务,TCP和UDP都会为多个应用程序的进程提供并发服务,而多个通信进程可能都会使用同一个TCP协议端口进行数据传输,为了区分不同的应用进程和连接事务,计算机操作系统非常有必要为应用程序和TCP/IP协议交互提供套接字的接口。23.2.2 WinSock API常用函
4、数VC+提供了多种对网络编程的支持,主要有:Socket支持,WinInet支持,MAPI和ISAPI支持等。Windows Sockets规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义,基于Windows Sockets的应用开发中主要应用的是WinSock API编程。Windows Sockets API是Win32 API的一个子集,是在TCP/IP网络环境里,也是Internet上进行开发最为通用的API。在网络通信环境中,Socket的数据通信可以看成是类似于C+中的一种特殊的I/O输入输出流,也就是一种文件描述符号,它在网络通信中使用一个S
5、ocket()函数对应于文件打开的Open()函数。Socket是一个通信端点,是网络通信程序设计的一个端口,通过这个端口,网络应用程序可以通过公共网络和其他网络应用程序进行通信。23.2.3 MFC对WinSock API的封装可以使用多种语言或集成开发环境在Windows中进行Winsock应用程序开发,如VC、JAVA、Dephi、VB等,其中VC与操作系统结合紧密而被广泛使用,在MFC库中,对Windows Sockets API进行了封装,使得开发者可以在面向对象的环境中进行套接字的网络应用程序的开发。在VC中进行WinSock的API网络应用程序开发,需要使用到以下三个文件:Win
6、Sock.h:这是WinSock API的头文件。Wsock32.lib:WinSock API链接库文件。WinSock.dll:WinSock的动态链接库文件。VC的MFC库为TCP/IP网络应用程序提供了两个类:CAsyncSocket类:CAsyncSocket继承于CObject类,它提供基于异步通信的套接字封装功能。CSocket:CSocket则是由CAsyncSocket派生,提供更加高层次的功能,例如可以将套接字上发送和接收的数据和一个文件对象(CSocketFile)关联起来,通过读写文件来达到发送和接收数据的目的,而且CSocket提供的通信为同步通信,数据未接收到或是未
7、发送完之前调用不会返回。23.3 B/S模式和C/S模式网络编程在软件层次上分为:B/S模式和C/S模式。在进行网络编程之前,首先要设计好需要研发的网络软件项目的模式。本节就B/S模式和C/S模式展开讲解两者之间的联系和区别,以及探讨两者的适用情况和特点。23.3.1 什么是B/S和C/S模式什么是C/S模式?C/S(Client/Server)结构,即客户机和服务器结构。它是一种软件系统体系结构,这种软件系统体系结构可以充分利用网络分布式计算资源,将任务(存储、操作或计算的任务)合理分配到不同的客户端或服务器中,提高了软件维护和使用的方便性。什么是B/S模式?B/S(Browser/Serv
8、er)结构即浏览器和服务器结构。它伴随着因特网的兴起而流行,是对客户机服务器模型的一种功能性改进的革命性跨越。23.3.2 C/S与B/S的区别从应用的范围来分:Client/Server是建立在局域网的基础上的,Browser/Server是建立在广域网的基础上的。出了应用范围外,C/S与B/S的区别还在于:(1)硬件环境不同。(2)对安全要求不同。(3)对程序架构不同。(4)软件重用不同。(5)系统维护不同。23.4 局域网技术如前文所述,C/S模式的应用程序主要应用于局域网的通信,本节主要针对C/S模式的应用程序的需要,讲解基于局域网的网络编程。23.4.1 网卡地址MAC卡(Media
9、 Access Control,介质访问控制)也称为网卡,是计算机连接互联网或局域网必备的硬件设备。MAC地址是烧制在网卡里的MAC地址符号,也叫物理地址,是由48比特长(6字节),16进制的数字组成。0-23位是由厂家出厂前分配,24-47位叫做组织唯一标志符,是识别LAN(局域网)节点的标识。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(电可擦除只读存储器芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的计算机和接收数据的主机的地址。23.4.2 获取计算机名称和IP获取本地计算机的名称和IP的程序设计相对与一个通信系统是需要掌
10、握的最基本知识。首先,创建一个单文档的MFC应用程序,然后,在视图类的OnDraw(CDC*pDC)函数中添加如下代码:void CIPView:OnDraw(CDC*pDC)CIPDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);char name50;gethostname(name,50);/获取主机名CString strName;strName=name;pDC-TextOut(200,200,strName);/显示主机名CString sIp;HOSTENT*host=:gethostbyname(strName.GetBuffer(strNam
11、e.GetLength();PBYTE addrList=(PBYTE)host-h_addr_list0;/获取主机的地址列表指针sIp.Format(_T(%d.%d.%d.%d),addrList0,addrList1,/将IP地址格式化addrList2,addrList3);pDC-TextOut(200,100,sIp);/显示IP地址 23.5 信息打包和发送在计算机网络传输过程中,传输的数据往往比原始数据要大得多,原因在于:数据信息需要打包,以标记发送者和发送目的地。如同信件一样,寄出一份信,不可能只有信纸,还必须有信封,一方面是为了保证信纸内容的隐私性,另一方面也是为了能让邮递员清楚地了解收件人的地址。23.6 小结本章主要概要性地介绍了网络编程所需要的基础知识,通过本章的学习,读者应该掌握的内容有:TCP/IP模型和OSI七层模型。套接字的基本概念及其常用的API函数。B/S和C/S模式的基本概念和原理。局域网的基本知识。网络传输的打包和发送的原理。
限制150内