基于网络的虚拟实验平台远程指导模块的设计与实现毕业设计内容摘要:
议提供的通信能力,来为上层应0 SI 参考模型 层次描述 OSI 层次号 应用层 7 表示层 6 会话层 5 传输层 4 网络层 3 数据链路层 2 物理层 1 TCP/IP 参考模型层 次描述 TCP/IP 层次号 应用层 4 传输层 3 网络层 2 数据链路层 1 第 6 页 共 23 页 用程序完成网络数据通讯,而不关心底层网络链路的通讯情况,真正实现了底层网络通讯对应用程序的透明。 流式套接字( SOCK_STREAM) 提供面向连接、可靠的数据传输服务,数据无差错、无重 复的发送,且按发送顺序接收。 数据报式套接字( SOCK_DGRAM) 提供无连接服务。 数据包以 “ 独立包 ” 形式发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。 原始套接字( SOCK_RAW)。 基于 TCP(面向连接 )的 socket编程 : 服务器端程序: 创建套接字( socket)。 将套接字绑定到一个本地地址和端口上( bind)。 将套接字设为监听模式,准备接收客户请求( listen)。 等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字( accept)。 用返回的套接字和客户端进行通信( send/recv)。 返回,等待另一客户请求。 关闭套接字。 客户端程序: 创建套接字( socket)。 向服务器发出连接请求( connect)。 和服务器端进行通信( send/recv)。 关闭套接字。 基于 UDP(面向无连接 )的 socket编程 : 服务器端(接收端)程序: 创建套接字( socket)。 将套接字绑定到一个本地地址和端口上( bind)。 等待接收数据( recvfrom)。 关闭套接字。 客户端(发送端 )程序: 创建套接字( socket)。 向服务器发送数据( send to)。 关闭套接字。 第 7 页 共 23 页 相关函数说明 ; int bind( SOCKET s, const struct sockaddr FAR *name, int namelen )。 这个函数接收三个参数。 第一个参数 s指定要绑定的套接字,第二个参数指定了该套接字的本地地址信息,是指向 sockaddr结构的指针变量,由于该地址结构是为所有的地址家族准备的,这个结构可能(通常会)随所使用的网络协议不同而不同,所以,要用第三个参数指定该地 址结构的长度。 sockaddr结构定义如下: struct sockaddr { u_short sa_family。 char sa_data[14]。 }。 sockaddr的第一个字段 sa_family指定该地址家族,在这里必须设为AF_INET。 sa_data仅仅是表示要求一块内存分配区,起到占位的作用,该区域中指定与协议相关的具体地址信息。 由于实际要求的只是内存区,所以对于不同的协议家族,用不同的结构来替换 sockaddr。 除了 sa_family外, sockaddr是按网络字节顺序表示的。 在 TCP/IP中,我们可以用 sockaddr_in结构替换 sockaddr,以方便我们填写地址信息。 sockaddr_in的定义如下: struct sockaddr_in{ short sin_family。 unsigned short sin_port。 struct in_addr sin_addr。 char sin_zero[8]。 }。 其中, sin_family表示地址族,对于 IP地址, sin_family成员将一 直是AF_INET。 成员 sin_port指定的是将要分配给套接字的端口。 成员 sin_addr给出的是套接字的主机 IP地址。 而成员 sin_zero只是一个填充数,以使 sockaddr_in结构和 sockaddr结构的长度一样。 如果这个函数调用成功,它将返回 0。 如果调用失败,这个函数就会返回一个 SOCKET_ERROR , 错 误 信 息 可 以通 过WSAGetLastError函数返回。 将 IP地址指定为 INADDR_ANY,允许套接字向任何分配给本地机器的 IP地址发送或接收数据。 多数情况下,每个机器只有一个 IP地址 ,但有的机器可能会有多个网卡,每个网卡都可以有自己的 IP地址,用 INADDR_ANY可以简化应用程序的编写。 将地址指定为 INADDR_ANY,允许一个独立应用接受发自多个接口的回应。 第 8 页 共 23 页 如果我们只想让套接字使用多个 IP中的一个地址,就必须指定实际地址,要做到这一点,可以用 i_addr()函数,这个函数需要一个字符串作为其参数,该字符串指定了以点分十进制格式表示的 IP地址 (如 )。 而且 i_addr()函数会返回一个适合分配给 S_addr的 u_long类型的数值。 i_ntoa()函数会完成相反的转换,它接受一个 in_addr结构体类型的参数并返回一个以点分十进制格式表示的 IP地址字符串。 P2P网络介绍 P2P技术源于局域网共享,其目标是改变人们通过服务器中转交换文件的传统方式,达到自由交换资源的目的。 IBM为 P2P下了如下定义:系统由若干互联协作的计算机构成,且至少具 有如下特征之一:系统依存于边缘化(非中央式服务器)设备的主动协作,每个成员直接从其他成员而不是从服务器的参与中受益;系统中成员同时扮演服务器与客户端的角色;系统应用的用户能够意识到彼此的存在,构成一个虚拟 或实际的群体。 P2P网络是互联网整体架构的基础,互联网中 最基本的 TCP/IP协议并没有客户端和服务器的概念,在通讯过程中,所有的设备都是平等的一端。 P2P 技术改变了 “ 内容 ” 所在的位置,使其正在从 “ 中心 ” 走向 “ 边缘 ” ,也就是说不再如 C\S模式将内容存于主要的服务器上,而是存在所有用户的 PC 机上。 广义的 P2P 网络将 P2P网络划分为纯分散式 P2P网络(如 gnutella模型 )、超级结点式网络和混合式 P2P网络等大类。 3 相关函数分析与代码实现 进程介绍 进程:通常被定义为 一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。 进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源 进程由两个部分组成: 操作系统用来管理进程的内核对象。 内核对象也是系统用来存放关于进程的统计信息的地方。 地址空间。 它包含所有可执行模块或 DLL模块的代码和数据。 它还包含动态内存分配的空间。 如线程堆栈和堆分配空间。 线程介绍 线程由两个部分组成: 线程 的内核对象,操作系统用它来对线程实施管理。 内核对象也是系统用来存放线程统计信息的地方。 第 9 页 共 23 页 线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量。 当创建线程时,系统创建一个线程内核对象。 该线程内核对象不是线程本身,而是操作系统用来管理线程的较小的数据结构。 可以将线程内核对象视为由关于线程的统计信息组成的一个小型数据结构。 线程总是在某个进程环境中创建。 系统从进程的地址空间中分配内存,供线程的堆栈使用。 新线程运行的进程环境与创建线程的环境相同。 因此,新线程可以访问进程的内核对象的所有句柄、进程中的 所有内存和在这个相同的进程中的所有其他线程的堆栈。 这使得单个进程中的多个线程确实能够非常容易地互相通信。 进程与线程的关系 进程是不 活泼的。 进程从来不执行任何东西,它只是线程的容器。 若要使进程某 操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。 单个进程可能包含若干个线程,这些线程都 “ 同时 ” 执行进程地址空间中的代码。 每个进程至少拥有一个线程,来执行进程的地址空间中的代码。 当创建一个进程时,操作系统会自动创建这个进程的第一个线程,称为主线程。 此后,该线程可以 创建其他的线程。 多线程实现 线程只有一个内核对象和一个堆栈,保留的记录很少,因此所需要的内存也很少。 因为线程需要的开销比进程少,因此在编程中经常采用多线程来解决编程问题,而尽量避免创建新的进程。 Hook 技术 Hook 函数简介及类型 Hook(钩子)是 WINDOWS提供的一种消息处理机制,是指在程序正常运行中接受信息之前预先启动的函数,用来检查和修改传给该程序的信息,(钩子)实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。 每当特定的消息发出,在没有到达目的窗口前,钩 子程序就先捕获该消息,亦即钩子函数先得到控制权。 这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还 可以强制结束消息的传递。 安装钩子函数将会影响系统的性能。 监测“系统范围事件”的系统钩子特别明显。 因为系统在处理所有的相关事件时都将调用您的钩子函数,这样系统将会明显的减慢。 HOOK链 WINDOWS提供了 14种不同类型的 HOOKS, 不同的 HOOK可以处理不同的消息。 例如: WH_MOUSE HOOK用来监视鼠标消息。 WINDOWS为这几种 HOOKS维护着各自的 HOOK 第 10 页 共 23 页 链表。 HOOK链表 是一串由应用程序定义的回调函数 (CALLBACK Function)队列,当某种类型的消息发生时, WINDOWS向此种类型的 HOOK链的第一个函数( HOOK链的顶部)发送该消息,在第一函数处理完该消息后由该函数向链表中的下一个函数传递消息,依次向下。 如果链中某个函数没有向下传送该消息,那么链表中后面的函数将得不到此消息。 (对于某些类型的 HOOK,不管 HOOK链中的函数是否向下传递消息,与此类型 HOOK联系的所有 HOOK函数都会收到系统发送的消息)一些Hook子过程可以只监视消息,或者修改消息,或者停止消息的 前进,避免这些消息传递到下一个 Hook子过程或者目的窗口。 最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。 HOOK的作用范围 两种类型:局部和远程 一、局部钩子仅钩挂您自己进程的事件。 二、远程的钩子还可以将钩挂其它进程发生的事件。 远程的钩子又有两种: 基于线程的 它将捕获其它进程中某一特定线程的事件。 简言之,就是可 以用来观察其它进程中的某一特定线程将发生的事件。 系统范围的 将捕捉系统中所有进程将发生的事件消息。 HOOK类型 Windows共有 14种 HOOKS,每一种类型的 Hook可以使应用程序能够监视不同类型的系统消息处理机制。 下面描述所有可以利用的 Hook类型的发生时机。 (这些常数值均可以 API浏览器里查到) WH_CALLWNDPROC和 WH_CALLWNDPROCRET Hooks WH_CALLWNDPROC和 WH_CALLWNDPROCRET Hooks使你可以监视发送到窗口过程的消息。 系统在消息发送到接收窗口过程之前调用 WH_CALLWNDPROC Hook子过程,并且在窗口过程处理完消息之后调用 WH_CALLWNDPROCRET Hook子过程。 WH_CALLWNDPROCRET Hook传递指针到 CWPRETSTRUCT结构,再传递到 Hook子过程。 CWPRETSTRUCT结构包含了来自处理消息的窗口过程的返回值,同样也包括了与这个消息关联的消息参数。 WH_CBT Hook 在以下事件之前,系统都会调用 WH_CBT Hook子过程,这些事件包括: 1. 激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件; 2. 完成系统指令; 3. 来自系统消息队列中的移动鼠标,键盘事件; 4. 设置输入焦点事件; 第 11 页 共 23 页 5. 同步系 统消息队列事件。 Hook子过程的返回值确定系统是否允许或者防止这些操作中的一个。 WH_DEBUG Hook 在系统调用系统中与其它 Hook关联的 Hook子过程之前,系统会调用 WH_DEBUG Hook子过程。 你可以使用这个 Hook来决定是否允许系统调用与其它 Hook关联的Hook子过程。 WH_FOREGROUNDIDLE Hook 当应用程序的前台线程处于空闲状态时,可以使用 WH_FOREGROUNDIDLE Hook执行低优先级的任务。 当应用程序的前台线程大概要变成空闲状态时,系统就会调用 WH_FOREGROUNDIDLE Hook子过程。 WH_GETMESSAGE Hook 应用程序使用 WH_GETMESSAGE Hook来监视从 GetMessage or PeekMessage函数返回的消息。 你可以使用 WH_GETMESSAGE Hook去监视鼠标和键盘输入,以及其它发送到消息队列中的。基于网络的虚拟实验平台远程指导模块的设计与实现毕业设计
相关推荐
C12C5A60S2 内部结构框图 13 图 主控芯片的 最小系统 GSM 模块 TC35 及 SIM 卡 TC35 模块介绍 : 目前 ,国内商品化的 GSM 模块有 Fal 的 A2D 系列、 Wavee 的 WM02 系列、西门子 TC35 系列、爱立信的 DM10 /DM20 系列、中兴的 ZXGM18 系列等 ,这些模块 之间的用法没有多大差距。 西门子的 TC35 系列 模块的性价比
,所以把七十七岁又称 “喜寿 ”。 在我国,农历七月初七的夜晚,天气温暖,草木飘香,这就是人们俗称的七夕节,也有人称之为 “乞巧节 ”或 “女儿节 ”,这是中国传统节日中最具浪漫色彩的一个节日,也是过去姑娘们最为重视的日子。 {念 .七夕 }巧克力包装设计 5 资料:依据所学《广告设计》的专业知识,深入研究与本次选题相关的知识点。 广告创意,是使广告达到广告目的的创造性的想法意念
图 、 14 的齿轮( 14)如图 、 18的滑移齿轮( 2)如图 、 22 双联齿轮如图。 如图 如图 (正面图形) 如图 (反面图形) 如图 如图 如图 牙嵌离合器 新建 42— 先建立一个坐标系,然后以 TOP 为草绘平面,利用旋转工具,先做出如图 所示的图形,然后以黄色虚线为旋转轴,经过旋转以后,得到如图所示的 所示的图。 在以 FRONT 面 切削拉伸,作出如图所示的图形。
作困难。 第三种数据模型是关系数据模型,关系数据模型是以二维来表示数据,其中一列表示一个属性(也称字段或数据项),另一列是属性值。 表中一行称为一个元组,元组可以有一个或若干个数据项的结合来标志它自己,称为键( key)。 行和列的毕业设计论文 第 17 页共 58 页 次序不象层次模型和网状模型重要,所有的数据项都是不能再细分的最基本的单位。 实体间的 联系不是用另一种对象来表示,而是用来表示
设计 本施工组织设计是本着“一流的质量、一流的工期、科学管理”来进行编制的。 编制时,我公司技术发展部、质检科以及项目部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设计。 一、 工程概况: 西夏建材城生活区 2 30住宅楼位于银川市新市区 ,橡胶厂对面。 本工程由宁夏燕宝房地产开发有限公司开发,银川市规划建筑设计院设计。 本工程耐火等级二级,屋面防水等级三级 ,地震防烈度为 8度
0 0 0 2 4 0 0 0 6 0 0 0 0 0 0 0 ≈ 4 0 0 0 6 0 0 0 R/C A2 A3 A0 A1 R/W A4 1 ≈ DATA I/O BYTE DATA I/O BYTE ≈ RST 广东 XX 大学 2020 届毕业设计 8 多字节读写 BEH BFH — — 表 35 片内时钟数据寄存器 的应用 实时时钟芯片 DS1302 采用串行数据传输