




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络通信 网络概念 连在一起能相互通讯的设备的集合两点要注意1连接2能互通讯 我们在开发的角度给网络分类 一Internet是世界范围内的网络它不仅连接了个人电脑 存储和发送信息的服务器还连接了PDA 电视和移动PC终端系统通常并不是直接连接而是通过交换设备连接在一起在网络上我们传递数据以数据包的方式传送的二局域网的连接构成与internet并无本质的区别所采用的设备都相同区别只在于我们要上internet必须通过ISP接入 两种开发模型C SB S A B 192 168 0 118 192 168 0 10 协议 协议 端口号 端口号 网络通信的要素 要素分析一必须知道对方的地址二端口号IP地址用来标识发送信息的源主机与目的主机端口号用来区分不同的应用程序 IP地址的类型及数据包的路由IP地址的组成要点1是个32位的值2分为两部分 网络号主机号 3分类 0 10 110 陆游器中存在的表表里的IP地址 网络 0 说明包如何进入远程网络 本地网络 主机 说明包如何到达本地主机当IP封包到达时陆游器在陆游表中查包的目的地址 如果包是发送到远程网络且路游表中有该IP则陆游器把这个包发送到目标网络如果表中没有该IP则它会把包发送到有更大陆游表的默认陆游器上 使用Socket完成网络通信 如何向网络上发送一个字节网络非常复杂 网络设备不同 操作系统不同 网络协议不同 问题的解决 Socket的出现 作为软件的开发者就不需要考虑以上的问题了 就像我们不需要考虑向硬盘的某一个扇区写一个字节一样 有了文件系统 我们只管调用API操作文件就行了 对于网络传输 操作系统与应用程序的接口就是套接字 Socket 插座 翻译成 套接字 网络上的两个程序通过一个双向的通信连接实现数据的交换 这个双向的链路的一端成为一个Socket Socket通常用来实现客户方和服务方的连接 一个Socket由一个IP地址和一个端口号 如 127 0 0 1 8080 唯一确定 套接字 socket 的引入 为了能够方便的开发网络应用软件 由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统调用socket 套接字 socket的出现 使程序员可以很方便地访问TCP IP 从而开发各种网络应用的程序 随着Unix的应用推广 套接字在编写网络软件中得到了极大的普及 后来 套接字又被引进了Windows等操作系统 成为开发网络应用程序的非常有效快捷的工具 套接字存在于通信区域中 通信区域也叫地址族 它是一个抽象的概念 主要用于将通过套接字通信的进程的共有特性综合在一起 套接字通常只与同一区域的套接字交换数据 也有可能跨区域通信 但这只在执行了某种转换进程后才能实现 WindowsSockets只支持一个通信区域 网际域 AF INET 这个域被使用网际协议簇通信的进程使用 WindowsSockets的实现 WindowsSockets是MicrosoftWindows的网络程序设计接口 它是从BerkeleySockets扩展而来的 以动态链接库的形式提供给我们使用 WindowsSockets在继承了BerkeleySockets主要特征的基础上 又对它进行了重要扩充 这些扩充主要是提供了一些异步函数 并增加了符合Windows消息驱动特性的网络事件异步选择机制 WindowsSockets1 1和BerkeleySockets都是基于TCP IP协议的 WindowsSockets2从WindowsSockets1 1发展而来 与协议无关并向下兼容 可以使用任何底层传输协议提供的通信能力 来为上层应用程序完成网络数据通讯 而不关心底层网络链路的通讯情况 真正实现了底层网络通讯对应用程序的透明 A B 192 168 0 118 192 168 0 10 协议 协议 端口号 端口号 Socket根据通信的性质可以分为3类 流式套接字Socket SOCKET STREAM 数据报Socket SOCK DGRAM 原始Socket SOCK RAW 流Socket 提供一种双向有序的 无重复的数据传输服务 实现了数据无差错 无重复的发送 流Socket是面向连接的 通信双方在进行数据交换前必须先建立连接 这样可以保证双方是活动的 而且彼此响应 在TCP IP协议簇中 使用TCP来实现Socket通信 当网络需要大批量的传输数据时 或者要求数据按照发送的顺序无重复的到达目的地时 使用流Socket进行通信最方便 数据报Socket 提供一种不可靠的双向数据传输服务 不保证数据的有序性和不重复性 数据在传输过程中可能被丢失 也可能重复 被接收的数据顺序可能和发出的顺序不同 同时 数据报Socket的传输是面向无连接的 不保证接收端是否正在接收或者监听该传输 这种方式和邮局送信的方式类似 寄信者只负责将信投入信箱 他并不能获知该信是否能正常传递至正确的接收者 而接收者确定对该信息的接收时间 在TCP IP协议簇中 使用UDP协议来实现数据报Socket 数据报Socket一般在负载较轻的网络上使用 虽然存在着不可靠性 但由于数据报Socket在传输时保留了记录边界 因此可以保证通信的质量 且可以获得较高的通信效率 原始Socket 允许直接访问较低层次的协议 如IP ICMP 常常用于检验新的协议的实现 也可以用于测试新的配置或网络设备 TCP IP协议与TCP UDP 网络编程中有两个主要的问题 一个是如何准确地定位网络上一台或多台计算机 另一个就是找到主机后如何可靠高效地进行数据传输 回答这两个问题的答案就是网络协议 不同的计算机之间必须使用相同的网络协议才能进行数据的交换 网络协议也有很多种 具体选择那一种协议则要视情况而定 Internet上的计算机广泛使用的是TCP IP协议 另外还有一种大有来头的协议是国际标准化组织ISO制定的OSI协议 但由于OSI协议过于学术化 其内容存在着过度设计 很难投入商业运作 因此TCP IP协议常被称为事实上的国际标准 所有的网络协议都是分层的 层的集合称为栈 Stack 一般应用程序只与顶层进行通话 而底层协议则完成于网络通信功能 应用层 表示层 物理层 会话层 传输层 网络层 数据链路层 应用层 表示层 物理层 会话层 传输层 网络层 数据链路层 报文 报文段 数据报 帧 比特 物理传输媒体 OSI各层所使用的协议 应用层 远程登录协议Telnet 文件传输协议FTP 超文本传输协议HTTP 域名服务DNS 简单邮件传输协议SMTP 邮局协议POP3等 处于应用层的信息称为报文 传输层 负责应用程序的客户机和服务器之间的信息传递 传递的信息称为报文段 传输控制协议TCP 用户数据报协议UDP TCP 面向连接的可靠的传输协议 UDP 是无连接的 不可靠的传输协议 网络层 网际协议IP Internet互联网控制报文协议ICMP Internet组管理协议IGMP 物理层 实现由操作系统负责 在物理层传输数据的单位是比特 不需要编程人员来控制 TCP TCP是TransferControlProtocol的简称 它是一种面向连接的 保证可靠传输协议 通过TCP协议传输 得到的是一个顺序无差错的数据流 发送方和接收方的成对的两个Socket之间必须建立连接 以便在TCP协议的基础上进行通信 当一个Socket 通常都是ServerSocket 等待建立连接时 另一个Socket可以要求进行连接 一旦这两个Socket连接起来 他们就可以进行双向数据传输 双方都可以进行发送和接收操作 UDP UDP是UserDatagramProtocol的简称 是一种无连接的协议 每个数据报都是一个独立的信息 包含完整的源地址或目的地址 它在网络上以任何可能的路径传往目的地 因此能否到达目的地 到达目的地的时间及内容的正确性都是不能被保证的 面向连接的TCP就像打电话 一方先拨打另一方电话 等到对方接起电话时就开始了一个会话 任何一方挂断就意味着会话的结束 这种通信是安全的 对方一接通 通信肯定就开始了 无连接的UDP则像发手机短信 只管发 发完就没事了 对方收到短信 可能会给回复 也可能不回复 这种通信是不安全的 但方便快捷 不需要系统来维持连接 但是 使用UDP传输数据时是有大小限制的 每个被传输的数据报必须限定在64kb之内 而TCP没有这方面的限制 一旦连接起来 双方的Socket就可以按统一的格式传输大量的数据 Winsock与WinsockAPI Socket也有很多品牌 Winsock是Socket在Windows操作系统上的版本 90年代初 由Microsoft联合其他几家公司共同制定了一套Windows下的网络编程接口 WindowsSocket规范 简称为Winsock 它不是一种网络协议 而是一套开放的 支持多种协议的Windows下网络编程接口 该编程规范从BerkeleySockets扩展而来 在继承BerkeleySockets的基础上 又进行了新的扩充 主要是提供了一些异步函数 并增加了符合Windows消息驱动特性的网络事件异步选择机制 从另一个角度讲 这些函数又可分为两类 一类是阻塞函数 另一类是非阻塞函数 所谓阻塞函数 是指其完成指定的任务之前不允许程序调用另一个函数 在Windows下还会阻塞本线程消息的发送 而非阻塞函数是指函数的调用不必等到操作结束之后才能返回 那么 我们的程序该如何得知该操作的后续进度呢 他何时才会结束 答案是这类非阻塞函数常常会返回一个事件的句柄 我们的程序一旦拿到了这个句柄 就可以进行控制了 端口 按照OSI七层模型的描述 传输层提供进程 应用程序 通信的能力 为了标识通信实体中进行通信的进程 应用程序 TCP IP协议提出了协议端口 protocolport 简称端口 的概念 端口是一种抽象的软件结构 包括一些数据结构和I O缓冲区 应用程序通过系统调用与某端口建立连接 binding 后 传输层传给该端口的数据都被相应的进程所接收 相应进程发给传输层的数据都通过该端口输出 端口用一个整数型标识符来表示 即端口号 端口号跟协议相关 TCP IP传输层的两个协议TCP和UDP是完全独立的两个软件模块 因此各自的端口号也相互独立 端口使用一个16位的数字来表示 它的范围是0 65535 1024以下的端口号保留给预定义的服务 例如 http使用80端口 用Socket实现C S模式 在TCP IP网络应用中 通信的两个进程间相互作用的主要模式是客户机 服务器模式 client server 即客户向服务器提出请求 服务器接收到请求后 提供相应的服务 客户机 服务器模式的建立基于以下两点 首先 建立网络的起因是网络中软硬件资源 运算能力和信息不均等 需要共享 从而造就拥有众多资源的主机提供服务 资源较少的客户请求服务这一非对等作用 其次 网间进程通信完全是异步的 相互通信的进程间既不存在父子关系 又不共享内存缓冲区 因此需要一种机制为希望通信的进程间建立联系 为二者的数据交换提供同步 这就是基于客户机 服务器模式的TCP IP 网络字节顺序 不同的计算机存放多字节值的顺序不同 有的机器在起始地址存放低位字节 低位先存 有的机器在起始地址存放高位字节 高位先存 基于Intel的CPU 即我们常用的PC机采用的是低位先存 为保证数据的正确性 在网络协议中需要指定网络字节顺序 TCP IP协议使用16位整数和32位整数的高位先存格式 socket 建立服务端socket bind 绑定socket listen 开始监听 accept 接受连接 recv send 返回 等待另一客户请求 closesocket 关闭socket socket 建立客户端socket connect 连接服务器 recv send closesocket 关闭socket UDP流程 对于无连接的UDP服务 服务器通常是面向事务处理的 服务器和客户端在传输数据之前不需要进行连接的申请和建立 数据传输结束后 直接关闭Socket即完成该类服务器 客户端系统调用流程 socket 建立服务端socket bind 绑定socket recvfrom sendto closesocket 关闭socket socket 建立客户端socket recvfrom sendto closesocket 关闭socket 相关函数说明 intWSAStartup WORDwVersionRequested LPWSADATAlpWSAData wVersionRequested参数用于指定准备加载的Winsock库的版本 高位字节指定所需要的Winsock库的副版本 而低位字节则是主版本 可用MAKEWORD x y 其中 x是高位字节 y是低位字节 方便地获得wVersionRequested的正确值 lpWSAData参数是指向WSADATA结构的指针 WSAStartup用其加载的库版本有关的信息填在这个结构中 WSADATA结构定义如下 typedefstructWSAData WORDwVersion WORDwHighVersion charszDescription WSADESCRIPTION LEN 1 charszSystemStatus WSASYS STATUS LEN 1 unsignedshortiMaxSockets unsignedshortiMaxUdpDg charFAR lpVendorInfo WSADATA LPWSADATA WSAStartup把第一个字段wVersion设成打算使用的Winsock版本 wHighVersion参数容纳的是现有的Winsock库的最高版本 记住 这两个字段中 高位字节代表的是Winsock副版本 而低位字节代表的则是Winsock主版本 szDescription和szSystemStatus这两个字段由特定的Winsock实施方案设定 事实上没有用 不要使用下面这两个字段 iMaxSockets和iMaxUdpDg 它们是假定同时最多可打开多少套接字和数据报的最大长度 然而 要知道数据报的最大长度应该通过WSAEnumProtocols来查询协议信息 同时最多可打开套接字的数目不是固定的 很大程度上和可用物理内存的多少有关 最后 lpVendorInfo字段是为Winsock实施方案有关的指定厂商信息预留的 任何一个Win32平台上都没有使用这个字段 如果WinSock dll或底层网络子系统没有被正确初始化或没有被找到 WSAStartup将返回WSASYSNOTREADY 此外这个函数允许你的应用程序协商使用某种版本的WinSock规范 如果请求的版本等于或高于DLL所支持的最低版本 WSAData的wVersion成员中将包含你的应用程序应该使用的版本 它是DLL所支持的最高版本与请求版本中较小的那个 反之 如果请求的版本低于DLL所支持的最低版本 WSAStartup将返回WSAVERNOTSUPPORTED 对于每一个WSAStartup的成功调用 成功加载WinSockDLL后 在最后都对应一个WSACleanUp调用 以便释放为该应用程序分配的资源 相关函数说明 SOCKETsocket intaf inttype intprotocol 该函数接收三个参数 第一个参数af指定地址族 对于TCP IP协议的套接字 它只能是AF INET 也可写成PF INET 第二个参数指定Socket类型 对于1 1版本的Socket 它只支持两种类型的套接字 SOCK STREAM指定产生流式套接字 SOCK DGRAM产生数据报套接字 第三个参数是与特定的地址家族相关的协议 如果指定为0 那么它就会根据地址格式和套接字类别 自动为你选择一个合适的协议 这是推荐使用的一种选择协议的方法 如果这个函数调用成功 它将返回一个新的SOCKET数据类型的套接字描述符 如果调用失败 这个函数就会返回一个INVALID SOCKET 错误信息可以通过WSAGetLastError函数返回 相关函数说明 intbind SOCKETs conststructsockaddrFAR name intnamelen 这个函数接收三个参数 第一个参数s指定要绑定的套接字 第二个参数指定了该套接字的本地地址信息 是指向sockaddr结构的指针变量 由于该地址结构是为所有的地址家族准备的 这个结构可能 通常会 随所使用的网络协议不同而不同 所以 要用第三个参数指定该地址结构的长度 sockaddr结构定义如下 structsockaddr u shortsa family charsa data 14 sockaddr的第一个字段sa family指定该地址家族 在这里必须设为AF INET sa data仅仅是表示要求一块内存分配区 起到占位的作用 该区域中指定与协议相关的具体地址信息 由于实际要求的只是内存区 所以对于不同的协议家族 用不同的结构来替换sockaddr 除了sa family外 sockaddr是按网络字节顺序表示的 在TCP IP中 我们可以用sockaddr in结构替换sockaddr 以方便我们填写地址信息 sockaddr in的定义如下 structsockaddr in shortsin family unsignedshortsin port structin addrsin addr charsin 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 允许一个独立应用接受发自多个接口的回应 如果我们只想让套接字使用多个IP中的一个地址 就必须指定实际地址 要做到这一点 可以用inet addr 函数 这个函数需要一个字符串作为其参数 该字符串指定了以点分十进制格式表示的IP地址 如192 168 0 16 而且inet addr 函数会返回一个适合分配给S addr的u long类型的数值 inet ntoa 函数会完成相反的转换 它接受一个in addr结构体类型的参数并返回一个以点分十进制格式表示的IP地址字符串 基于消息的异步套接字 Windows套接字在两种模式下执行I O操作 阻塞和非阻塞 在阻塞模式下 在I O操作完成前 执行操作的Winsock函数会一直等待下去 不会立即返回程序 将控制权交还给程序 而在非阻塞模式下 Winsock函数无论如何都会立即返回 WindowsSockets为了支持Windows消息驱动机制 使应用程序开发者能够方便地处理网络通信 它对网络事件采用了基于消息的异步存取策略 WindowsSockets的异步选择函数WSAAsyncSelect 提供了消息机制的网络事件选择 当使用它登记的网络事件发生时 Windows应用程序相应的窗口函数将收到一个消息 消息中指示了发生的网络事件 以及与事件相关的一些信息 解决方法 CAsyncSocketCSocket CSocketWnd WinSock 订阅消息 如 FD ACCEPT 发送消息WM SOCKET NOTIFY 激活OnXXX 函数 如 OnAccept 相关函数说明 SOCKETWSASocket intaf inttype intprotocol LPWSAPROTOCOL INFOlpProtocolInfo GROUPg DWORDdwFlags 前三个参数和socket 函数的前三个参数含义一样 lpProtocolInfo 一个指向WSAPROTOCOL INFO结构体的指针 该结构定义了所创建的套接字的特性 如果lpProtocolInfo为NULL 则WinSock2DLL使用前三个参数来决定使用哪一个服务提供者 它选择能够支持规定的地址族 套接字类型和协议值的第一个传输提供者 如果lpProtocolInfo不为NULL 则套接字绑定到与指定的结构WSAPROTOCOL INFO相关的提供者 g 保留的 dwFlags 套接字属性的描述 相关函数说明 intWSARecvFrom SOCKETs LPWSABUFlpBuffers DWORDdwBufferCount LPDWORDlpNumberOfBytesRecvd LPDWORDlpFlags structsockaddrFAR lpFrom LPINTlpFromlen LPWSAOVERLAPPEDlpOverlapped LPWSAOVERLAPPED COMPLETION ROUTINElpCompletionRoutine s 标识套接字的描述符 lpBuffers in out 一个指向WSABUF结构体的指针 每一个WSABUF结构体包含一个缓冲区的指针和缓冲区的长度 dwBufferCount lpBuffers数组中WSABUF结构体的数目 lpNumberOfBytesRecvd out 如果接收操作立即完成 则为一个指向本次调用所接收的字节数的指针 lpFlags in out 一个指向标志位的指针 lpFrom out 可选指针 指向重叠操作完成后存放源地址的缓冲区 lpFromlen in out 指向from缓冲区大小的指针 仅当指定了lpFrom才需要 lpOverlapped 一个指向WSAOVERLAPPED结构体的指针 对于非重叠套接字则忽略 lpCompletionRoutine 一个指向接收操作完成时调用的完成例程的指针 对于非重叠套接字则忽略 相关函数说明 intWSASendTo SOCKETs LPWSABUFlpBuffers DWORDdwBufferCount LPDWORDlpNumberOfBytesSent DWORDdwFlags conststructsockaddrFAR lpTo intiToLen LPWSAOVERLAPPEDlpOverlapped LPWSAOVERLAPPED COMPLETION ROUTINElpCompletionRoutine s 标识一个套接字 可能已连接 的描述符 lpBuffers 一个指向WSABUF结构体的指针 每一个WSABUF结构体包含一个缓冲区的指针和缓冲区的长度 dwBufferCount lpBuffers数组中WSABUF结构体的数目 lpNumberOfBytesSent out 如果发送操作立即完成 则为一个指向本次调用所发送的字节数的指针 dwFlags 指示影响操作行为的标志位 lpTo 可选指针 指向目标套接字的地址 iToLen lpTo中地址的长度 lpOverlapped 一个指向WSAOVERLAPPED结构的指针 对于非重叠套接字则忽略 lpCompletionRoutine 一个指向接收操作完成时调用的完成例程的指针 对于非重叠套接字则忽略 使用CSocket连接Web站点 当查看网页时 IE浏览器与Web站点之间的通信采用HTTP协议 HTTP HyperTextTransferProtocol 是超文本传输协议 他用于传送WWW方式的的数据 HTTP协议采用请求 响应模型 客户端向服务器发送一个请求 请求头包含请求的方法 URI 协议版本 以及包含请求的修饰符 客户信息和内容类似于MIME的消息结构 服务器以一个状态行作为响应 相应的内容包含消息协议的版本 成功或者错误编码加上包含服务器信息 实体元信息以及可能的实体内容 BOOLAFXAPIAfxParseURL LPCTSTRpstrURL DWORD返回值 如果成功地解析了URL 则返回非零值 如果URL为空或它不包含已知的Internet服务类型 则为0 参数 pstrURL指向包含了要解析的URL的字符串的指针 dwServiceType指明了Internet服务的类型 可能的取值如下 AFX INET SERVICE FTP AFX INET SERVICE HTTP AFX INET SERVICE HTTPS AFX INET SERVICE GOPHER AFX INET SERVICE FILE AFX INET SERVICE MAILTO AFX INET SERVICE NEWS AFX INET SERVICE NNTP AFX INET SERVICE TELNET AFX INET SERVICE WAIS AFX INET SERVICE MID AFX INET SERVICE CID AFX INET SERVICE PROSPERO AFX INET SERVICE AFS AFX INET SERVICE UNKstrServerURL中服务类型后的第一个部分 strObjectURL涉及的对象 可能为空 nPort如果存在 则从URL的服务器或对象部分搜索出来 说明 这个全局函数被用于CInternetSession OpenURL 它解析一个URL字符串 返回服务的类型以及其它的内容 例如 AfxParseURL解析一个如下形式的URL service server dir dir object ext port 返回的内容如下 strServer server strObject dir dir object object ext nPort portdwServiceType service注意 为了调用这个函数 你必须在项目中包含AFXINET H 请求数据的格式 第1行 方法 请求的内容 HTTP协议的版本下载一般可以用GET方法 请求的内容是 index html HTTP协议的版本是指浏览器支持的版本 对于下载软件来说无所谓 所以用1 1版 HTTP 1 1 GET index htmlHTTP 1 1 第2行 主机名 格式为 Host 主机 例如 Host 第3行 接受的数据类型 下载软件当然要接收所有的数据类型 所以 Accept 第4行 指定浏览器的类型有些服务器会根据客户服务器种类的不同会增加或减少一些内容 在这个例子中可以这样写 User Agent MicrosoftInternetExplorer 6 0 第5行 连接设置设定为一直保持连接 Connection Keep Alive 第6行 若要实现断点续传则要指定从什么位置起接收数据 格式如下 Range bytes 起始位置 终止位置 比如要读前500个字节可以这样写 Range bytes 0 499 从第1000个字节起开始下载 Range bytes 999 最后 别忘了加上一行空行 表示请求头结束 整个请求头如下 GET index htmlHTTP 1 1 r nHost r nAccept r nUser Agent MicrosoftInternetExplorer 6 0 r nConnection Keep Alive r n r n 用WinInet开发Internet客户端 概述WinInet的全称是Win32InternetExtensions 他提供了一个通用的网络协议访问接口 包括HTTP FTP和Gopher Gopher
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 雪花兑奖活动策划方案
- 西餐最佳活动方案
- 灌肠法考试题及答案
- 窗外的世界景物描写与想象13篇
- 招聘流程标准化操作步骤手册
- 法语逻辑考试题及答案
- 写物:我的最爱铅笔盒10篇
- (正式版)DB15∕T 3659-2024 《马铃薯种薯田间检验操作技术规程》
- 文字识别技术服务协议
- 专业家具采购与销售协议合同
- 跟司马懿学管理
- 2024年下半年湖北省恩施巴东县乡镇事业单位考聘三支一扶人员5人易考易错模拟试题(共500题)试卷后附参考答案
- 《内科学,循环系统》课件
- 2024-2025大学英语考试六级汉译英中英对照
- 材料清单模板
- 2024-2025学年广东省深圳实验学校高中园高一(上)第一次段考数学试卷(含答案)
- 人教版(2019)高中生物必修1《分子与细胞》期末复习知识点考点提纲
- 2《企业会计准则第9号-职工薪酬(2014年修订)》
- 2024年太原市小店区供热公司招聘笔试参考题库附带答案详解
- 中医培训课件:《放血疗法》
- 市政道路监理规划及市政道路监理大纲
评论
0/150
提交评论