电子教案·Visual课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《电子教案·Visual课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 教案 Visual 课件
- 资源描述:
-
1、网络编程入门授课教师:网络编程网络编程导入 计算机和网络通信的出现给人们的生活带来了革命性的变化 计算机的硬件离不开软件,通信软件使计算机网络硬件的具体功能得以实现 Microsoft Visual C+是由微软开发的可视化软件开发平台,具有强大面向对象功能,可以开发开发网络通信软件 本章要点Visual C+6.0开发平台的基本使用技巧网络通信编程基本原理常见网络工具软件分析Visual C+6.0开发平台 Visual C+6.0是微软推出的产品,它提供了强大的编译能力以及良好的界面操作性。能够对C+程序设计提供完善的编程环境。Visual C+6.0是可视化软件开发平台,具有强大面向对象
2、功能 在此平台下可以利用微软已经封装好的基本类库,开发网络通信软件。使用Visual C+6.0创建一个新工程 第一步:启动并进入Visual C+6.0的集成开发环境。创建一个新工程 选择“文件”“新建”,在弹出的对话框中选择新建工程的类型创建一个新工程创建一个新工程新工程的运行结果Visual C+6.0项目文件Visual C+6.0项目中的主要文件.dsp:VC开发环境生成的工程文件,非常重要。.dsw:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。.ncb:ncb是“No Compile Browser”的缩写,其中存放了供ClassView
3、、WizardBar和Component Gallery使用的信息,由VC开发环境自动生成。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。.rc:资源定义文件。.clw:ClassWizard生成的用来存放类信息的文件。.aps:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。.h:用C/C+语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。.cpp:用C+语言编写的源代码文件。Visual C+6.0调试工具 调试工具 网络通信基础面向连接的服务 VS 面向无连接的服务 面向连接的服务:发送信息的源计算机必
4、须首先与接收信息的目的计算机建立连接。一旦连接建立起来,相互连接的计算机就可以进行数据交换。它是可靠的。面向无连接的服务:发送信息的计算机把数据以一定的格式封装在数据帧中,把目的地址和源地址加在信息头上,然后把帧交给网络进行发送。无连接服务是不可靠的。计算机网络分层TCP/IP协议主要协议在网络层中的分布情况主要网络协议 TCP协议:传输控制协议(Transmission Control Protocol)。是面向连接的协议,它可以提供可靠传输服务。UDP协议:用户数据报协议(User Datagram Protocol)。UDP协议提供了用户进程的无连接服务。HTTP协议:超文本传输协议(H
5、ypertext Transfer Protocol)。提供了网页浏览服务,是现在应用最广的协议之一。FTP协议:文件传输控制协议(File Transfer Protocol)。提供了文件的传输功能和一些常用的文件操作。SMTP协议:简单邮件传输协议(Simple Mail Transfer Protocol)。提供了邮件的传送服务。主要网络协议 TELNET协议:终端协议(Telnet Terminal Protocol)。提供了远程登录服务,允许用户以虚拟终端方式访问远程主机。ICMP协议:网间报文控制协议(Internet Control Message Protocol),它的功能是
6、处理IP主机或者路由器之间的差错和传输控制。ARP协议:地址解析协议(Address Resolution Protocol)。它的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。RARP协议:反向地址解析协议(Reverse Address Resolution Protocol)。负责把主机硬件地址映射为网络地址,也就是把MAC地址转化为对应的IP地址。RARP协议的功能与ARP协议恰恰相反。网络程序设计模型C/S结构 C/S结构是网络程序设计的基本模型,它是一个典型的分布式结构。在C/S结构中,服务器程序始终处于监听状态,当被监听的服务端口处有服务请求
7、时,立即响应客户的服务请求。客户机在发出服务请求信号前,必须指定服务器地址和端口号才能获得相应的服务。C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,客户端响应速度快。服务器端:1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。2、等待客户请求到达该端口。3、接收到重复服务请求,处理该请求并发送应答信号。4、返回第二步,等待另一客户请求5、关闭服务器。客户端:1、打开一通信通道,并连接到服务器所在主机的特定端口。2、向服务器发送服务请求报文,等待并接收应答;继续提出请求3、请求结束后关闭通信通道并终止。请求和应答请求的基本过程
8、套接字编程的基本原理什么是套接字?套接字(socket)是网络计算机与应用程序之间发送和接收数据的方式的一种抽象描述。它描述了两个通信点之间的连接。确切的说,套接字(socket)是用来实现主机和主机通信的一个接口。通过它可以完成主机间的通信操作,它位于协议之上,屏蔽了底层的协议,让用户能够实现各种类型的通信操作。最常用的套接字类型有三种 流(Stream)套接字用于提供面向连接、可靠的数据传输服务。数据报(Datagram)套接字提供了一种无连接的服务,是不可靠的。原始(Raw)套接字原始套接字可以读写内核没有处理的IP数据包。讨论:我们经常使用的网络通信软件有哪些?我们机房使用的电子教室软
9、件有哪些功能?扫描可控计算机授课教师:网络编程网络编程导入 电子教室软件主要功能是教师可以通过教师机程序控制和管理学生机 教师机端控制程序能够主动扫描学生机,确定哪些学生已经进入电子教室,是可控计算机 本章通过简单的通信程序实现扫描局域网内可控计算机的功能 本章要点扫描可控计算机功能实现分析WinSock通信编程技术MFC网络通信编程技术扫描可控计算机功能需求分析 教师机主动联系学生机,如果不能与学生机建立联系,则说明学生机端没有运行该程序,该学生机不在可控范围;反之,如果教师机与学生机成功的取得了联系,则证明学生机已启动程序,处于可控状态。教师机扫描学生机时,应该可以设置扫描范围,例如一个I
10、P地址范围,教师机与范围内的所有学生机逐一联系,判断其是否处于可控状态,将处于可控状态的学生机显示在教师机端的程序界面上。设计程序界面 关键技术分析 关键技术就是两台联网的计算机之间进行通信 采用什么技术实现网络通信?套接字(Socket)WinSock进行面向连接通信编程WinSock实现基于TCP的客户端/服务器通信 程序演示 程序源代码(见教材P18)程序代码详解头文件和库文件#include#pragma comment(lib,ws2_32.lib)使用WinSock进行编程开发,需要头文件和库文件ws2_32.lib的支持。程序代码详解 WSADATA1.WSADATA wsaDa
11、ta;2.if(ret=WSAStartup(MAKEWORD(2,2),&wsaData)!=0)3.4.printf(初始化WinSock出错);5.return 0;6.7.WSACleanup();程序代码详解 socket 调用Socket()函数可以建立套接字 函数原型:SOCKET socket(int af,int type,int protocol)参数af:套接字要使用的协议地址族,目前只提供AF_INET表示使用互联网协议(IP)地址。参数type:描述套接字的类型,只能是SOCK_STREAM、SOCK_DGRAM、SOCK_RAW 中的一个。参数protocol:该套
12、接字使用的特定通信协定(如果使用者不指定则设为0)。程序代码详解bind 调用bind()函数为服务器端定义的监听套接字指定一个地址及监听端口(Port)int bind(SOCKET s,const Struct sockaddr FAR*name,int namelen);参数s:未绑定的套接字的对象名。参数name:套接字的地址值,是个结构体。参数namelen:地址参数name的长度。程序代码详解listen listen函数在TCP服务器端使用,通知协议内核用户进程准备接受接口上的连接请求 int listen(SOCKET s,int backlog);参数s:已绑定但尚未连接的套
13、接字句柄,也是由socket()函数创建的套接字句柄。参数backlog:待处理的连接队列的最大长度。当连接的客户数大于这个最大长度并且服 程序代码详解accept accept函数在服务器端等待并接受客户的连接,该函数返回一个新的套接字,该套接字可以用来与对方进行通信,而原先的套接字还是处于监听状态。int accept(SOCKET s,struct sockaddr FAR*addr,int FAR*addrlen);参数s:表示处于监听模式的套接字句柄。参数addr:是SOCKADDR对象的地址。参数addrlen:表示addr参数的长度。程序代码详解send send函数发送数据 i
14、nt send(SOCKET s,const char FAR*buf,int len,int flags);参数s:表示已连接的本地套接字描述符。参数buf:表示要发送的缓冲区数据。参数len:表示缓冲区的长度。参数flags:表示标志类型,可以为0,MSG_DONTROUTE,MSG_OOB。程序代码详解recv recv函数从TCP连接的另一端接收数据 int recv(SOCKET s,char FAR*buf,int len,int flags);参数s:接收端套接字描述符。参数buf:指明一个缓冲区,用来存放接收到的数据。参数len:buf的长度。参数flags:表示标志,可以是0
15、,MSG_PEEK,MSG_OOB。一般置0。程序代码详解 connect Connect函数完成通信的连接过程 int connect(SOCKET s,const struct sockaddr FAR*name,int namelen);参数s:表示是将要和服务器建立连接的套接字句柄。参数name:服务器的地址结构 参数namelen:地址名字name的长度。MFC的CSocket类 微软的MFC把复杂的WinSock API函数封装到类里,这使得编写网络应用程序更容易。MFC中的CAsyncSocket类逐个封装了WinSock API CSocket类是由CAsyncSocket继承
16、而来,继承了它封装的WinSock API CSocket类实现网络通信编程过程 1.构造一个CSocket对象。2.使用这个对象的Create()成员函数产生一个socket对象。在客户方程序中,除非需要数据报套接字,Create()函数一般情况下应该使用默认参数。而对于服务方程序,必须在调用Create时指定一个端口。3.如果是客户方套接字,则调用Connect()函数与服务方套接字连接;如果是服务方套接字,则调用Listen()开始监听来自客户方的连接请求,收到连接请求后,调用Accept()函数接受请求,建立连接。4.连接成功建立后,可以使用Receive()和Send()函数进行数据
17、发送和接收工作。5.通信结束后,使用Close()函数销毁CSocket对象。CSocket类实现的面向连接的套接字通信过程 代码详解头文件#include 头文件afxsock.h中包含 CAsyncSocket 和 CSocket 类定义。代码详解 Create函数 BOOL Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM,long lEvent=FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,LPCTSTR lpszSocketAddress=NULL);参数nSock
18、etPort:与套接字一起使用的端口号,默认值为0,表示自动选择端口号。参数nSocketType:指定要创建的套接字类型,默认为流式套接字。参数lEvent:指定感兴趣的网络事件的掩码位。参数lpszSocketAddress:指定套接字的网络地址。代码详解 Listen函数 BOOL Listen(int nConnectionBacklog=5);参数nConnectionBacklog:指定连接请求队列的最大连接数目,默认为5。代码详解Accept函数 virtual BOOL Accept(CAsyncSocket&rConnectedSocket,SOCKADDR*lpSockAd
19、dr=NULL,int*lpSockAddrLen=NULL);参数rConnectedSocket:用来进行连接的新套接字的引用。参数lpSlpSockAddr:用来返回发送连接请求的套接字地址的SOCKADDR结构指针。参数lpSockAddrLen:指向pSockAddr结构中地址的字节长度的指针。代码详解 Connect函数 BOOL Connect(LPCTSTR lpszHostAddress,UINT nHostPort);参数lpszHostAddress:用于要连接的服务器网络地址。参数nHostPort:指定套接字应用程序使用的端口号。代码详解Receive函数 virtu
20、al int Receive(void*lpBuf,int nBufLen,int nFlags=0);参数lpBuf:接收数据的缓冲区。参数nBufLen:缓冲区的字节节长度。参数nFlags:用来表示函数的实现,默认为0。代码详解Send函数 virtual int Send(const void*lpBuf,int nBufLen,int nFlags=0);参数lpBuf:要发送的数据的缓冲区地址。参数nBufLen:lpBuf缓冲区的字节长度。参数nFlags:指定函数的调用标志,默认值为0。代码详解Close函数 该函数用来关闭套接字并释放Socket描述符,其函数原型为:Virt
21、ual void Close();扩展核心程序 首先建立两个应用程序,一个teacher和一个student。student程序应首先启动,teacher程序能够主动向所有student程序发出连接请求 能够成功建立连接的学生机就是可控学生机,把其IP地址显示在teacher程序界面上。本章技能训练实例 实验题目:简单的考试报名系统实现 实验目的:掌握使用Socket进行通信的基本方法和简单控件编程 实验内容:开发一个服务器端程序,能够接收客户端发来的信息;开发一个客户端程序,能够将信息发送给服务器端,可采用CSocket编程,也可以用WinSock编程。文件传输授课教师:网络编程网络编程导入
22、 在电子教室软件系统中,教师经常需要通过教师机向所有学生下发文件,传递授课资料,有时也需要学生将完成的作业上传到教师机,这就涉及到一个文件传输的问题,本章我们就通过一个简单的文件传输程序。本章要点 文件传输功能分析设计 文件操作编程技术 多线程编程技术 文件下发程序实现功能需求分析 包含两个程序,一个发送端程序,一个接收端程序。发送端程序可以由用户选择要发送的文件。发送端程序可以指定发送对象,可以是一个IP范围,也可以是某个IP地址。接收端程序可以由用户指定接收到的文件的存放地址。界面设计 关键技术分析 文件传输的本质用一句话概括就是:发送方将文件数据读出来,然后调用套接字的发送函数将数据传输
23、到接收方,接收方调用套接字接收函数接收数据,然后重新建立文件并将数据写入文件。文件传输流程 发送文件功能的实现接收文件功能的实现流程代码详解文件操作 CFile类:CFile类是MFC文件类的基类,提供非缓冲方式的二进制磁盘输入、输出功能;并直接通过派生类来支持文本文件和内存文件。提供访问本地文件内容的功能,不支持访问网络文件的功能。使用CFile操作文件的基本过程是:定义CFile对象打开要操作的文件 对文件/写文件关闭文件文件操作Open()函数 该函数的功能是打开指定文件。BOOL CFile:Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFile
24、Exception*pException)参数lpszFileName:带完整路径的文件名,指定要打开的文件。参数nOpenFlags:指定文件打开方式,可以是多个标志的组合。文件操作Read()函数 该函数的功能是从文件中读取文件内容。virtual UINT CFile:Read(void*lpBuf,UINT nCount);参数lpBuf:存放读出的文件内容的空间地址。参数nCount:从文件读出的最大字节数。文件操作 Write()函数 该函数的功能是向文件中写数据 virtual void Write(const void*lpBuf,UINT nCount);参数lpBuf:存储
25、要写入文件的数据的空间地址。参数nCount:要写入文件的数据的字节数。文件操作 Close()函数 功能是关闭文件句柄。文件操作完毕必须调用Close()函数关闭文件。第一步程序扩展实现较大文件的传输 上面文件传输实例的功能并不强大,但是它的实现过程很简单,说明了文件传输的原理。它忽略了真实文件的大小在上面的代码中,为了从文件中读取数据,首先获得文件长度,然后开辟一段和文件长度匹配的内存作为文件缓冲。但现在很多文件动辄几百兆字节,往往无法一次开辟如此大的内存容纳如此多的数据。所以对于大文件传输,这段代码显然不合适。解决方法:分段缓冲文件数据。实现方法详见代码 第二步程序扩展同时向多个目标传输
展开阅读全文