版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、。武悌措高新学院毕业设计(论文)基于TCP协议的数据网络通信设计系别:信息技术系专业名称:通信技术学生姓名:生若学号:2009513230指导教师:周燕完成日期2012年4月基于TCP协议的简单即时通信软件的设计与实现摘要即时通信(InstantMessage),由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKE套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS统都在内核提供了对SOCKE存接口的支持。使用这个统一的接口,可以编写一个可移植的TCP/IP通信
2、程序。使信息能够在INTERNET:可靠的传输。本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKE套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XMU列化的消息进行通信。关键词:即时通信;文件传输;套接字;TCPB议TheDesignandImplementationofSimpleInstantMessageSoftwareBasedonTCPProtocolAbstractIn
3、stantmessageshaveseveraladvantagessuchasreal-time,cross-platform,cheapandefficient.TodesignaMulti-userIM(instantmessage)architectureisveryimportantinboththeoryandrealism.InstantmessagebasedonTCP/IPprotocolthatisrealizedbysocketinterface.AlmostallUNIXoperationsystemsandMicrosoft'swindowsoperation
4、systemsprovidesupportofsocketinthekernel.Usingtheuniforminterface,wecandevelopaportableprogramofTCP/IP,whichhelpustransferinformationinInternetsafelyandcredibly.Thesystemusestheclient/server(C/S)mode.Theservertakestheresponsibilityoftheloginmessageofclient,thesavingoffriendmessageandMessageheartbeat
5、.ThetransmissionofthebasicmessagesofthecustomerendwillbedesignedonP2Parchitecture.ThisthesisexplainshowtheclientandservercommunicateviaserializingXMLmessage.Keywords:InstantMessage;FileTransfer;Socket;TCPprotocol基于TCP协议的简单即时通信软件的设计与实现.doc1 引言11.1 课题背景12 相关技术介绍12.1 .NET开发平台及C#.NET开发语言12.2 TCP#议22.2.1
6、 TCP/IP网络协议22.2.2 TCP-传输控制协议22.3 套接字32.4 流32.4.1 流的基本概念32.4.2 .NET中的流32.5 同步、异步、阻塞和非阻塞42.6 C/S模型42.7 即时通信协议53 系统总体设计53.1 需求分析53.2 系统基本架构63.3 功能模块设计63.4 逻辑图83.5 数据库设计83.5.1 实体关系图83.5.2 详细列表94 系统实现104.1 使用XML定义的即时通信协议104.1.1 信息乌吉构MESSAGE.CS&UMESSAGE.CS104.1.2 数据Z构FriendStruct104.2 数据库连接类104.3 服务器端
7、104.3.1 同步套接字网络监听104.3.2 多线程114.3.3 计时器114.4 客户端124.4.1 同步套接字客户端124.4.2 采用异步套接字的文件传输15结论15参考文献16致说甘171引言1.1课题背景即时通信是一个终端连往一个即时通信网路的服务。即时通信不同于e-mail在于它的交谈是实时的。大部分的即时通信服务提供了presenceawareness的特性显示联络人名单,联络人是否在在线与能否与联络人交谈。最早的即时通信软件是ICQ,ICQ是英文中Iseekyou的谐音,意思是我找你。四名以色列青年于1996年7月成立Mirabilis公司,并在11月份发布了最初的IC
8、Q版本,在六个月内有85万用户注册使用。在因特网上受欢迎的即时通信服务包含了MSNMessenger;AOLInstantMessenger、Yahoo!Messenger、NETMessengerService、Jabber、ICQ与QQ这些服务有赖于许多想法更久的(与普遍)的在线聊天媒介,如InternetRelayChat一样知名。1970年代早期,一种更早的即时通信形式是柏拉图系统(PLATOsystem)。之后在1980年代,UNIX/Linux的交谈实时信息被广泛的使用于工程师与学术界,1990年代即时通信更跨越了因特网交流。1996年11月,ICQ是首个广泛被非UNIX/Linu
9、x使用者用于因特网的即时通信软件。在ICQ的介绍之后,同时在许多地方有一定数量的即时通信方式发展,且各式的即时通信程序有独立的协议,无法彼此互通。这引导使用者同时执行两个以上的即时通信软件,或者他们可以使用支持多协议的终端软件,如GainTrillian或Jabber。近年来,许多即时通信服务开始提供视讯会议的功能,网络电话(VoIP),与网络会议服务开始整合为兼有影像会议与实时信息的功能。于是,这些媒体的分别变的越来越模糊。2相关技术介绍2.1 .NET开发平台及C#.NET开发语言.NET框架是Microsoft公司推出的一种全新的开发平台,提供了统一的、面向对象并且可以扩展的编程类库和完
10、善的集成开发环境,大大简化了应用程序的开发过程,并且具有良好的移植性和安全性。微软为了推行.NET战略,特别为.NET平台设计了一种语言一一C拄C呢由C和C+璇生而来的一种“简单、流行、面向对象、类型安全”的程序设计语言,其综合了Visualbasic的高效率和C+勺强大功能,然而更多的人感觉C#E类似JAVA事实上C#8合了大量的JAVA思想,C#1.NET的关键性语言,它是整个.NET平台的基础。与C楙目比,.NET所支持的其它语言显然是配角,包括VC+.NET&内。但是微软并没有打算放弃VC+.NET相反,微软对VC+.NETW着另一番独特的打算,VC+.NET勺定位与C/完全重
11、合,VC+.NE皿用范围仍强于C#这一点无论对微软公司还是软件业应用现状都非常重要。可见VC+.NE怖NET1架中已经退化成了底层的语言了,就像C+记前的标准C语言一样,以后将只有开发底层或桌面程序的程序员使用它。它虽然仍旧强大,但是已经不是主流,而主流就是C#&言。2.2 TCP协议2.2.1 TCP/IP网络协议协议是对等的网络实体之间通信的规则,可以简单地理解为网络上各计算机彼此交流的一种“语言”。网络通信协议设计的基本原则是层次化,层和协议的集合被称为网络体系结构。相邻层之间的接口定义了下层向上层提供的基本操作和服务,下层向上层提供的服务分两种形式:面向连接的服务和无连接的服务
12、。计算机网络中已经形成的网络体系结构主要有两个:OSI参考模型和TCP/IP参考模型。TCP/IP参考模型是因特网(Internet)的基础。和OSI的7层协议相比,TCP/IP协议只有4个层次。通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族,包括100多个相互关联的协议,其中IP(InternetProtocol,网际协议)是网络层最主要的协议;TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议是传输层中最主要的协议),一般认为IP、TCPUDPt最根本的三种协议,是其他协议的
13、基础。2.2.2 TCP-传输控制协议面向连接的通信可以使用可靠通信,在这时候,第四层协议发送数据接收方的确认,如果未收到数据或者数据被损坏,则请求重新传输。TCP协议就使用这种可罪通缶。使用TCPB议的应用层协议包括HTTPFTRSMT体口Telnet等。TCP要求在发送数据之前必须打开连接。服务器应用程序必须执行一个称作被动打开(passiveopen)的操作,以利用一个已知的端口号创建一个链接,这是,服务器并不是对网络进行呼叫,而是侦听并等待引入的请求。客户应用程序必须执行一个主动打开(activeopen),为此,它向服务器应用程序发送一个同步序列号(SYN以标识连接。客户应用程序可以
14、将动态端口号作为本地端口使用。服务器必须向客户发送一个确认(ACK以及服务器的序列号(SYN。随后,客户回复一个ACK这样就建立了链接。现在可以发送和接收消息了。接收消息后,总是返回ACK?肖息。如果在收到ACK之前发送方已经超时,则消息将被放到重发队列中以再次发送。由于它的握手机制,所以TCPB议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。2.3 套接字套接字这个术语并没有定义某个协议:它具有两层含义,但两者都与一个协议相关。第一个含义是套接字编程API,它最初由伯克利大学为BSDUNIX而创建。BSD套接字在经过修改后被用作Win
15、dows环境的编程接口(并且被命名为WinSock)。WinSockAPI被包装在System.Net.sockets命名空间的.NET类中。WindowsSockets是一个独立于协议的编程接口,用于编写网络应用程序。套接字的第二层含义表示一个用于在进程间进行通信的终端。在TCP/IP中,每个终端都与一个IP地址和一个端口号绑定。我们必须对流式套接字和数据报套接字这两种类型进行区分。流失套接享用TCP/IP协议来使用面向连接的通信;另一方面,数据报套接字用UDP/IP来使用无连接通信。2.4 流2.4.1 流的基本概念流的概念已经存在很长时间了。流是一个用于传输数据的对象。数据的传输有两个方
16、向:1)如果数据从外部源传输到程序中,这就是读取流。2)如果数据从程序传输到外部源,这就是写入流。外部源常常是一个文件,但也不完全都是文件,它还可以是:1)网络,使用一定的网络协议与网络上其它计算机或终端交换数据。2) 一个指定的管道。3) 一块内存区域。2.4.2.NET中的流在这些情况中,微软提供了一个.NET基类System.IO.MemoryStream来读写内存数据使用System.Net.Sockets.NetworkStream处理网络数据。读写管道没有相应的流类,但有一个常见的流类System.IO.Stream,如果要编写一个这样的类,可以从这个基类继承。流对外部数据源不做任
17、何假定。外部源还可以是代码中的一个变量,使用流在变量之间传输数据的技术是一个非常有用的技巧,可以在数据类型之间转换。在网络编程中我们经常会使用到网络中的流对象:Networkstream。它实现了.NET中标准的Stream机制,即可以使用Networkstream通讯网络套接享用标准的流操作进行网络数据的读写。它提供以下的功能:1) 一个统一的从网络中读取数据的方法2)与其他的.NET流兼容,这样你可以很容易地移植程序。2.5 同步、异步、阻塞和非阻塞同步(synchronous):所谓同步方式,就是发送方发送数据包以后,不等接受方响应,就接着发送下一个数据包。异步(asynchronous
18、):异步方式就是当发送方发送一个数据包以后,一直等到接受方响应后,才接着发送下一个数据包。阻塞(Block):指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上,比如调用StreamReader类的Readlin()方法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此Readlin()方法将一直挂在调用上,直到读到一些数据,此函数调用才返回非阻塞(Unblock):指在执行此套接字的网络调用时,不管是否执行成功,都立即返回。同样调用StreamReader类的Readlin()方法读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调
19、用上。在Windows网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。平常所说的C/S(客户端/服务器)结构的软件采用的方式就是异步非阻塞模式的。其实在用C#进行网络编程中,我们并不需要了解什么同步、异步、阻塞和非阻塞的原理和工作机制,因为在.NetFrameWrokSDK中已经已经把这些机制给封装好了。2.6 C/S模型客户机/服务器模型,又称为Client/Server模型,简称C/S架构。C/S计算技术在信息产业当中占有重要的地位。这种客户机/服务器模型是一种非对称式编程模式。该模式的基本思想是把集中在一起的应用划分成为功能不同的两个部分,分别在不同的计算机上运行,通过它们之间的
20、分工合作来实现一个完整的功能。对于这种模式而言其中一部分需要作为服务器,用来响应并为客户提供固定的服务;另一部分则作为客户机程序用来向服务器提出请求或要求某种服务。在此“服务器”是指能在网络上提供服务的任何程序。服务器接受网络上的请求,完成服务后将结果返回给申请者。对于简单的服务,把每个请求用一个IP数据报发给服务器,服务器用另一个数据报返回响应。客户机和服务器都是独立的计算机。当一台连入网络的计算机向其他计算机提供各种网络服务(如数据、文件的共享等)时,它就被叫做服务器。而那些用于访问服务器资料的计算机则被叫做客户机。严格说来,客户机/服务器模型并不是从物理分布的角度来定义,它所体现的是一种
21、网络数据访问的实现方式。采用这种结构的系统目前应用非常广泛。如宾馆、酒店的客房登记、结算系统,超市的POS系统,银行、邮电的网络系统等。各种网络服务器基本都遵循同样的算法:创建一个端口(Port),接受从网络上来的客户服务请求,完成计算后把结果返回给客户,如此反复。2.7 即时通信协议协议是一系列的步骤,它包括双方或者多方,设计它的目的是要完成一项任务。即时通信协议,参与的双方或者多方是即时通信的实体。协议必须是双方或者多方参与的,一方单独完成的就不算协议。这样在协议动作的过程中,双方必须交换信息,包括控制信息、状态信息等等。这些信息的格式必须是协议参与方同意并且遵循的。好的协议要求清楚,完整
22、,每一步都必须有明确的定义,并且不会引起误解;对每种可能的情况必须规定具体的动作。有许多的IM系统,如AOLIM、YahooIM和MSNIM,它们使用了不同的技术,而且它们互不兼容。为了创建即时通信的统一标准,人们经过了多次尝试:IETF的对话初始协议(SIP)和即时通信对话初始协议和表示扩展协议(SIMPLE、应用交换协议(APEX、显示和即时通信协议(PRM及基于XML且开放的可扩展通信和表示协议(XMPP协议(常称为Jabber协议)。人们多次努力,试图统一各大主要IM供应商的标准(AOLYahoo及Microsoft),但无一成功,且每一种IM仍然继续使用自己所拥有的协议。本系统目的在
23、于实现一个简单的即时通信过程,没有必要采用通用的比较复杂的即时通信协议,因此使用了简单定义的XML标记定义来规范即时通信的各种网络信息,在网络中传输序列化的XM印言。3系统总体设计3.1 需求分析软件针对局域网内部用户,实现用户间的即时通信。需要分别实现服务器端和客户端的软件设计。服务器端负责监听用户连接请求,负责连接数据库存储用户信息,负责发送给用户好友信息,负责发送心跳报文检查用户在线状态并即时让用户更新好友在新信息。客户端发起主动连接,向服务器请求登录或者注册。客户端可以修改昵称,可以加已知用户为好友(类似于MSN勺好友添加功能)。客户端之间可以发起P2P模式的聊天,可以传送文件。3.2
24、 系统基本架构基于C/S架构的即时通信软件便于对用户信息进行统一管理和保存,面向特定的用户,对信息的安全控制能力很强。为了减轻服务器负担,客户端之间的信息传递是采用P2P模式的,服务器只负责用户的注册,登录和用户在线状态的检验。基本结构如图:图1系统基本架构3.3 功能模块设计CLIENT:1 .注册:(1)可以完成客户端注册,客户端可以通过填写信息进行注册,信息被发送到服务器端。2 .登录:(1)客户可以输入账号和密码进行登录,客户端会发送登录信息等待服务器响应,登录成功后会发出登录成功信息并刷新好友列表。3 .修改:(1)密码修改:应该有密码修改功能(2)信息修改:可以更改一些注册信息4
25、.通信:(1)即时聊天模块:客户端与客户端之间建立线程进行即时聊天,也包含有简单的对称加解密算法功能。(2)好友列表:可以对好友列表进行添加删除等动作5 .文件传输:(1)文件传输:文件传输功能SERVER6 .注册回应:对客户端传送的注册信息进行判断。HASH加密:对用户的账号和密码信息进行HASHb口密(2)重复用户检查:将加密后信息与已存在账号进行比较,检查是否账号已存在,如果存在就返回错误信息(3)注册成功:将可成功注册的用户账号和密码写入数据库内,并向客户端返回成功信息7 .修改回应:(1)对密码和信息修改请求进行判断,执行和返回修改成功信息8 .登录回应:(1)对登录的账号和密码进
26、行加密检查后发回正确或错误情况,并记录上线信息(2)好友列表发送:给成功登录的账号发送好友列表及好友上线信息(3)上线信息发送:给成功登录的账号的好友发送在线信息(包括IP,端口等等信息)9 .在线情况:(1)对登录,在线,离线的用户情况进行统计,记录和通知(2)心跳测试:每隔一段时间发送报文测试用户是否因意外原因离线(3)情况记录:将用户登录时间,IP,下线时间等信息记录入数据库3.4 逻辑图图2逻辑图3.5 数据库设计3.5.1 实体关系图服务器是作为记录和读取数据库信息的载体,与客户端关系并不复杂,这里需要重点考虑客户端之间的关系。用户与用户之间的关系是较为特殊的递归关系,即描述发生在两
27、个相同实体上的关系。E-R图如下:3.5.2 详细列表数据库包含两个表,分别为记录用户信息的TCP_Userinfo和记录用户好友信息的TCP_Friendinfo。详细设计见下面两表:表1用户信息表TCP_UserInfoTCP_Userinfo列(属性)名类型主键宽度是否允许为空备注UserIDnumericY9NOTNULL自增长UserAccountncharN20NOTNULL用户帐号UserNicknamencharN20NOTNULL用户昵称,可重复UserEmailncharN20NOTNULL用户EMAILJoinDatencharN35NOTNULL注册日期LastLogi
28、nncharY20NOTNULL最后登录IPUserIPncharY20NOTNULL用户IPUserFavvarcharN100NOTNULL用户好友分组,有默认值UserQuestionncharY20NOTNULL密码问题UserAnswerncharY20NOTNULL密码答案UserPasswordncharN20NOTNULL用户密码UserOnlineintN4NOTNULL在线状态,1在,0不在表2用户好友表TCP_FriendInfoTCP_Userinfo列(属性)名类型主键宽度是否允许为空备注InfoIDnumericY9NOTNULL自增长UserIDncharN20N
29、OTNULL用户IDFriendIDncharN20NOTNULL用户好友IDFriendGroupncharN20NOTNULL用户好友分组4系统实现4.1 使用XMLt义的即时通信协议4.1.1 信息结构MESSAGE.CS&UMESSAGE.CS这两个C#1定义了包括服务器信息,状态信息,注册信息,登录信息,聊天信息或者请求文件传输信息的函数,服务器和客户端通过将它们实例化和序列化再转换成流在网络上进行传输。4.1.2 数据结构FriendStruct服务器如果保存和传递用户的好友信息是难点之一。数据库的设计和信息的传递辨别都是比较难实现的。在数据库方面,每个用户拥有各自的好友分
30、组信息(UserFav),分组中间使用“,”分隔,在TCP_FriendInfo表中则分别保存了用户ID和好友ID,使用一个INT字段保存分组信息。数据库以用户ID为标准对好友ID和分组信息进行内连接查询,就可以得到基本的好友信息了。4.2 数据库连接类实现一个快捷简单的数据库连接的相关代码是非常有必要的。实现的途径也多种多样,鉴于安全性和复杂性的需求不同,实现方法有简有繁。本设计使用了一个简单的类(UserData.CS)实现了简单快捷的数据库连接和读取。4.3 服务器端服务器端的界面设计是基于便于测试的目的而实现的。如下图:这里显示已连人的连接这里显示传入的原始 信息图4服务器端界面4.3
31、.1 同步套接字网络监听基于同步套接字的网络监听器对服务器来说并不是最好的解决方案,但是仍然可行并且实现简单。如果发现用户发送的是登录信息,就根据登录信息中的用户名和密码判断是否存在用户,密码是否正确,成功后再查询出用户的好友信息并且赋值给FriendStruct,再将信息返回给客户端:4.3.2 多线程对于服务器来说,多线程是必不可少的,否则它将无法处理不断请求的新连接。C#勺System.Threading提供了多线程编程的支持。本设计实现代码如下:this.th=newThread(newThreadStart(Serve);/新建一个用于监听的线程th.Start();/打开新线程不仅
32、仅是服务器,基于P2P模式聊天的客户端也必须支持多线程运行,实现代码与之类似,在客户端设计说明中将不再叙述。4.3.3 计时器计时器用于实现心跳报文的功能,服务器在启动以后就开始计时,每隔一定时间就向所有连入的客户端发送信息,核心代码如下:/用计时器检查客户端是否掉线System.Timers.TimeraTimer=newSystem.Timers.Timer();aTimer.Elapsed+=newElapsedEventHandler(CheckStatus);/设置引发时间的时间间隔此处设置为5秒(5000毫秒)aTimer.Interval=5000;aTimer.Enabled=
33、true;CheckStatus就是用于向客户端发送检查信息的方法,它会向遍历连入的客户端(alSock),然后依次向客户端发送信息,如果发现客户端没有响应,就会如果发现对方无回应,则关闭相应的SOCKET并更新数据库的用户在线状态,同时向该用户的所有好友发送用户已下线的通知。4.4客户端图5注册界面图6登录、聊天、文件传输界面4.4.1 同步套接享客户端客户端发起同步套接字连接,并传送登录或者注册信息,由于两者方式类似,这里仅列出用户登录的代码:#region发送服务器登录信息,并接收服务器反馈信息publicvoidClient。建立SOCKET送信息:tryIPEndPointServe
34、rIPEP=newIPEndPoint(IPAddress.Parse("6"),8888);c=newSocket(ServerIPEP.AddressFamily,SocketType.Stream,ProtocolType.Tcp);c.Connect(EndPoint)ServerIPEP);s=newMemoryStream();_translator.Serialize(s,_message);byte口d=newbytes.Length;s.Seek(0,SeekOrigin.Begin);s.Read(d,0,d.Length);in
35、ti=c.Send(d,0,d.Length,SocketFlags.None);catch(Exceptionex)MessageBox.Show(ex.Message);以下代码读取了服务器返回给客户端的信息(注册和登录的成功与失败),如果返回了登录成功的信息,还会读取服务器给出的FriendStruct结构以得到用户的好友信息:#region接收反馈信息byte口data=newbyte2048;while(true)intrect=c.Receive(data);byte口chat=newbyterect;Buffer.BlockCopy(data,0,chat,0,rect);UMe
36、ssagebumessage=(UMessage)_translator.Deserialize(newMemoryStream(chat);string口fg;string_fg=bumessage.Fg;if(bumessage.Info=3)elseif(bumessage.Info=11)fg=_fg.Split(',');intxxx=bumessage.Fn;ff=bumessage.Fri;for(inti=0;i<xxx;i+)stringems=newstring5;ems0=ffi.account;ems1=ffi.nickname;ems2=fgin
37、t.Parse(ffi.fg);ems3=ffi.IP;ems4=ffi.status;ListViewItemitem=newListViewItem(ems);this.listViewl.Items.Add(item);CSERVER一个用于开启监听P2P信息的方法,客户端在登录成功以后就会立刻开启监听器,才能够实现与其它客户端的聊天:th=newThread(newThreadStart(CServer);/新建一个用于监听其它客户端信息的线程th.Start();打开新线程MessageBox.Show(bumessage.Accounts+"登录成功!");this.Button1.Enabled=false;this.Button3.E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 任务5.1 买家购物流程
- 医疗数据安全治理:区块链脱敏技术应用
- 医疗数据安全攻防的区块链监管机制
- 胸痛课件教学课件
- 医疗数据安全培训中的区块链技术合规应用
- 胫腓骨课件教学课件
- 【9道第三次月考】安徽省宿州第九中学教育集团2025-2026学年九年级上学期12月月考道德与法治试题(含解析)
- 延安市重点中学2026届语文高三上期末质量跟踪监视模拟试题含解析
- 医疗数据安全共享的区块链权限分级模型
- 医疗数据安全保险驱动框架
- 信息技术产品供货保障措施及质量保证计划
- 充电桩电量销售合同范本
- 设备售后服务方案(3篇)
- 协会提成管理办法
- 水库调度操作规程模板
- 酒店情况诊断报告
- GB/T 45795-2025大气颗粒物PM10、PM2.5质量浓度观测光散射法
- 2025年夏季山东高中学业水平合格考地理试卷试题(含答案)
- 爆破备案工作报告
- 企业现金流管理课件
- 旧电梯拆除合同协议书
评论
0/150
提交评论