第23章 网络编程基础.ppt_第1页
第23章 网络编程基础.ppt_第2页
第23章 网络编程基础.ppt_第3页
第23章 网络编程基础.ppt_第4页
第23章 网络编程基础.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、第23章 VC+网络编程基础,网络编程是一门内容很广的专题,本章不可能详细将网络编程的所有知识都讲述完,本章主要就是提供网络编程的基本概念,为读者在后继章节的网络编程实例中,打下理论基础。 本章的主要内容有: TCP/IP协议:读者将学到TCP/IP协议的基本理论。 Windows Sockets基础:读者将学会Windows套接字的概念和进行相应的程序设计应该具备的理论知识。 B/S模式和C/S模式:读者将学会当今主流的两种网络系统架构以及这两者的区别和应用方向。 局域网技术:读者将学会在局域网内进行网络编程的一些程序设计技巧。,23.1 TCP/IP协议简介,TCP/IP协议并不完全符合O

2、SI的七层参考模型。主要在于历史原因方面,早在互联网建立的初期,TCP/IP已经被几个大的互联网公司所使用,后来才制定出了OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。如图23.1所示,该图所示是使用OSI的七层参考模型的A主机到B主机的数据传输。,23.2 Windows Sockets基础,Windows操作系统为开发人员在Windows环境下编写网络应用程序提供了Windows Socket SDK,即

3、是Windows套接字API(应用程序接口),而MFC类库则将这些API封装在几个类里,通过类对象来调用这些API。本节主要讲述套接字的原理和API函数的简介。,23.2.1 套接字概述,套接字是通信双方一种相互约定的通信方式和规则,在TCP/IP通信中,一般使用套接字的相关函数接口来完成通信过程。 应用程序是在应用层的,而需要通信的应用程序使用了传输层的服务,TCP和UDP都会为多个应用程序的进程提供并发服务,而多个通信进程可能都会使用同一个TCP协议端口进行数据传输,为了区分不同的应用进程和连接事务,计算机操作系统非常有必要为应用程序和TCP/IP协议交互提供套接字的接口。,23.2.2

4、WinSock API常用函数,VC+提供了多种对网络编程的支持,主要有:Socket支持,WinInet支持,MAPI和ISAPI支持等。Windows Sockets规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义,基于Windows Sockets的应用开发中主要应用的是WinSock API编程。Windows Sockets API是Win32 API的一个子集,是在TCP/IP网络环境里,也是Internet上进行开发最为通用的API。 在网络通信环境中,Socket的数据通信可以看成是类似于C+中的一种特殊的I/O输入输出流,也就是一种文件描

5、述符号,它在网络通信中使用一个Socket()函数对应于文件打开的Open()函数。Socket是一个通信端点,是网络通信程序设计的一个端口,通过这个端口,网络应用程序可以通过公共网络和其他网络应用程序进行通信。,23.2.3 MFC对WinSock API的封装,可以使用多种语言或集成开发环境在Windows中进行Winsock应用程序开发,如VC、JAVA、Dephi、VB等,其中VC与操作系统结合紧密而被广泛使用,在MFC库中,对Windows Sockets API进行了封装,使得开发者可以在面向对象的环境中进行套接字的网络应用程序的开发。 在VC中进行WinSock的API网络应用程

6、序开发,需要使用到以下三个文件: WinSock.h:这是WinSock API的头文件。 Wsock32.lib:WinSock API链接库文件。 WinSock.dll:WinSock的动态链接库文件。 VC的MFC库为TCP/IP网络应用程序提供了两个类: CAsyncSocket类:CAsyncSocket继承于CObject类,它提供基于异步通信的套接字封装功能。 CSocket:CSocket则是由CAsyncSocket派生,提供更加高层次的功能,例如可以将套接字上发送和接收的数据和一个文件对象(CSocketFile)关联起来,通过读写文件来达到发送和接收数据的目的,而且CS

7、ocket提供的通信为同步通信,数据未接收到或是未发送完之前调用不会返回。,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)结构,即客户机和服务器结构。它是一种软件系统体系结构,这种软件系统体系结构可以充分利用网络分布式计算资源,将任务(存储、操作或计算的任务)合理分配到不同的客户端或服务器中,提高了软件维护和使用

8、的方便性。 什么是B/S模式? B/S(Browser/Server)结构即浏览器和服务器结构。它伴随着因特网的兴起而流行,是对客户机服务器模型的一种功能性改进的革命性跨越。,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模式的应

9、用程序的需要,讲解基于局域网的网络编程。,23.4.1 网卡地址,MAC卡(Media Access Control,介质访问控制)也称为网卡,是计算机连接互联网或局域网必备的硬件设备。MAC地址是烧制在网卡里的MAC地址符号,也叫物理地址,是由48比特长(6字节),16进制的数字组成。0-23位是由厂家出厂前分配,24-47位叫做组织唯一标志符,是识别LAN(局域网)节点的标识。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(电可擦除只读存储器芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的计算机和接收数据的主机的地址。,23.4

10、.2 获取计算机名称和IP,获取本地计算机的名称和IP的程序设计相对与一个通信系统是需要掌握的最基本知识。首先,创建一个单文档的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); / 显示主

11、机名 CString sIp; HOSTENT *host=:gethostbyname(strName.GetBuffer(strName.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 信息打包和发送,在计算机网络传输过程中,传输的数据往往比原始数据要大得多,原因在于:数据信息需要打包,以标记发送者和发送目的地。如同信件一样,寄出一份信,不可能只有信纸,还必须有信封,一

温馨提示

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

评论

0/150

提交评论