网络软件设计10——有状态设计课件

上传人:沈*** 文档编号:241713063 上传时间:2024-07-17 格式:PPT 页数:38 大小:1.93MB
返回 下载 相关 举报
网络软件设计10——有状态设计课件_第1页
第1页 / 共38页
网络软件设计10——有状态设计课件_第2页
第2页 / 共38页
网络软件设计10——有状态设计课件_第3页
第3页 / 共38页
点击查看更多>>
资源描述
网络软件设计网络软件设计服务器的有状态与无状态服务器的有状态与无状态有状态协议设计有状态协议设计制作主讲段景山段景山段景山2n n状状态l l由服由服由服由服务务器器器器维护维护的,关于服的,关于服的,关于服的,关于服务务器与客器与客器与客器与客户户机正在机正在机正在机正在进进行行行行的交互的交互的交互的交互 的信息称的信息称的信息称的信息称为为状状状状态态l l“信息信息信息信息”不是指服不是指服不是指服不是指服务务器和客器和客器和客器和客户户机交互的数据,而机交互的数据,而机交互的数据,而机交互的数据,而是关于交互是关于交互是关于交互是关于交互过过程本身程本身程本身程本身n n有状有状态服服务器器l l保存状保存状保存状保存状态态信息的服信息的服信息的服信息的服务务器程序器程序器程序器程序uu例:例:例:例:认证认证服服服服务务器需要器需要器需要器需要记录记录与客与客与客与客户户交互的状交互的状交互的状交互的状态态正在正在正在正在认认证证(等待用(等待用(等待用(等待用户户名、等待口令)、已名、等待口令)、已名、等待口令)、已名、等待口令)、已认证认证等等等等n n无状无状态服服务器器l l不保存状不保存状不保存状不保存状态态信息的服信息的服信息的服信息的服务务器程序器程序器程序器程序l l例:聊天例:聊天例:聊天例:聊天应应用用用用有状态与无状态服务器有状态与无状态服务器段景山段景山3有状态服务有状态服务n n为什么要求什么要求设计有状有状态服服务器器l l任任任任务务需求需求需求需求l l可以减少可以减少可以减少可以减少报报文开文开文开文开销销(利用(利用(利用(利用报报文文文文间间的相关性)的相关性)的相关性)的相关性)n n有状有状态服服务器面器面临的的问题l l增加增加增加增加实现实现的复的复的复的复杂杂程度程度程度程度l l需要复需要复需要复需要复杂杂的的的的协议协议控制控制控制控制l l系系系系统统在多个状在多个状在多个状在多个状态态下下下下转换时转换时,可能因,可能因,可能因,可能因错误错误事件而事件而事件而事件而导导致:致:致:致:进进入非期望状入非期望状入非期望状入非期望状态态、死、死、死、死锁锁、崩、崩、崩、崩溃溃l l可以可以可以可以设计设计有限状有限状有限状有限状态态机来指机来指机来指机来指导软导软件件件件实现实现段景山段景山4无状态是一个协议问题无状态是一个协议问题n n为什么要什么要设计无状无状态服服务l l任任任任务务需求需求需求需求l l服服服服务实现简单务实现简单,可靠性,可靠性,可靠性,可靠性强强l l一个一个一个一个报报文的意文的意文的意文的意义义不依不依不依不依赖赖先前的先前的先前的先前的报报文状文状文状文状态态的依的依的依的依赖赖性性性性n n究竟网究竟网络应用用软件是有状件是有状态的的还是无状是无状态的的l l从系从系从系从系统统的角度,系的角度,系的角度,系的角度,系统统是是是是“无状无状无状无状态态”的的的的uu系系系系统统能不断能不断能不断能不断为为各次通信服各次通信服各次通信服各次通信服务务l l从功能从功能从功能从功能实现实现角度,复角度,复角度,复角度,复杂杂的通信的通信的通信的通信应应采用有状采用有状采用有状采用有状态态方法方法方法方法设计设计段景山段景山5有限状态机有限状态机n n一种直一种直观、全局、准确的、全局、准确的协议描述方法描述方法状状态转换事件事件动作作缺点缺点时序序性不性不强段景山段景山6有限状态机的基本结构有限状态机的基本结构n状状态:l 实体有有限个状体有有限个状态l 每一每一时刻,刻,实体只体只处于其中一个状于其中一个状态n事件:事件:l 事件引起事件引起实体体产生生动作,如收到作,如收到PDU、定、定时器到器到时等等l 事件按事件按发生的生的顺序排在事件序排在事件队列中,等待列中,等待处理理l 事件可能有附加条件事件可能有附加条件n动作:作:l 处理理队列中的一个事件,列中的一个事件,转移到下一状移到下一状态 l 不同状不同状态下,下,对同一事件可能有不同的同一事件可能有不同的处理方法理方法l 最最简动作:忽略事件,保持状作:忽略事件,保持状态(图中可省略不画)中可省略不画)FSM事事件件状态状态1状态状态2事件事件e1/动作作a1事件事件e2/动作作a2事件事件e3/动作作a3段景山段景山7例例n n以停等以停等协议为例,例,讲解利用有限状解利用有限状态机机实现有有状状态设计l l发发送方送方送方送方发发送完一个数据包后,需得到接收方的确送完一个数据包后,需得到接收方的确送完一个数据包后,需得到接收方的确送完一个数据包后,需得到接收方的确认认才能才能才能才能发发送下一个数据包送下一个数据包送下一个数据包送下一个数据包l l若接收方超若接收方超若接收方超若接收方超时时没有确没有确没有确没有确认认,发发送方将重送方将重送方将重送方将重传传段景山段景山8停等协议的状态机(停等协议的状态机(1)状态机状态机(Ns,Nr)发送发送接收接收递交递交上层上层DU协议实体协议实体PDU、ACKTo:对等实体:对等实体PDU、ACKFrom:对等实体:对等实体状态机的位置状态机的位置段景山段景山9停等协议(停等协议(2)n n状状态的确定的确定0ACK1ACK发送方发送方发送方发送方接收方接收方接收方接收方准准备发送送帧1准准备发送送帧0等待等待帧1等待等待帧0段景山段景山10停等协议状态机停等协议状态机准备准备准备准备发送帧发送帧发送帧发送帧0 0 0 0准备准备准备准备发送帧发送帧发送帧发送帧1 1 1 1收到收到收到收到ACKACK并准备好并准备好并准备好并准备好一个帧一个帧一个帧一个帧发送帧发送帧发送帧发送帧0 0收到收到收到收到ACKACK并准备好一并准备好一并准备好一并准备好一帧数据帧数据帧数据帧数据发送帧发送帧发送帧发送帧1 1超时超时超时超时重发帧重发帧重发帧重发帧0 0超时超时超时超时重发帧重发帧重发帧重发帧1 1等待等待等待等待接收帧接收帧接收帧接收帧0 0 0 0等待等待等待等待接收帧接收帧接收帧接收帧1 1 1 1收到帧收到帧收到帧收到帧0 0发送发送发送发送ACKACK帧帧帧帧0 0上交上交上交上交收到帧收到帧收到帧收到帧1 1发送发送发送发送ACKACK帧帧帧帧1 1上交上交上交上交接收方接收方发送方发送方段景山段景山11有限状态机小结有限状态机小结n n状状态l l状状状状态态是复合的是复合的是复合的是复合的uu由多个要素形成由多个要素形成由多个要素形成由多个要素形成uu如:准如:准如:准如:准备发备发送送送送帧帧0 0状状状状态态 刚发刚发送了送了送了送了帧帧1 1 上上上上层层有一个待有一个待有一个待有一个待发发的的的的SDUSDU 收到了收到了收到了收到了对对前一前一前一前一帧帧的的的的应应答答答答 等待等待等待等待刚发刚发送的送的送的送的帧帧的的的的应应答答答答还还没有超没有超没有超没有超时时l l系系系系统统的状的状的状的状态态是是是是稳稳定的定的定的定的uu不触不触不触不触发发就不就不就不就不变变化化化化l l制定状制定状制定状制定状态态的的的的结结果可能不唯一果可能不唯一果可能不唯一果可能不唯一状状态1状状态2/x段景山段景山12有限状态机小结有限状态机小结n n事件事件l l转换转换的的的的输输入条件入条件入条件入条件uu若是若是若是若是别别的状的状的状的状态态的的的的动动作造成作造成作造成作造成转换转换,则跃则跃迁的状迁的状迁的状迁的状态态是不是不是不是不稳稳定定定定状状状状态态,不,不,不,不应应出出出出现现uu可以是可以是可以是可以是对对等等等等实实体的体的体的体的动动作作作作l l状状状状态态机一次只机一次只机一次只机一次只处处理一个事件理一个事件理一个事件理一个事件uu如果有必要如果有必要如果有必要如果有必要处处理多个事件,理多个事件,理多个事件,理多个事件,应应定定定定义为义为复合事件复合事件复合事件复合事件状状态1状状态2事件事件1/动作作1事件事件2(动作作1)/动作作2,动作作2事件事件1,事件事件2/动作作3事件事件1/动作作1事件事件2/动作作2状状态3状状态1事件事件3/动作作3段景山段景山13有限状态机小结有限状态机小结n n动作作l l动动作一定由事件触作一定由事件触作一定由事件触作一定由事件触发发uu不触不触不触不触发发就自就自就自就自发产发产生生生生动动作是不作是不作是不作是不稳稳定状定状定状定状态态l l某些某些某些某些转换转换不一定不一定不一定不一定产产生生生生动动作,作,作,作,动动作不一定伴随状作不一定伴随状作不一定伴随状作不一定伴随状态态转换转换uu触触触触发发不一定有不一定有不一定有不一定有动动作作作作产产生,不一定造成状生,不一定造成状生,不一定造成状生,不一定造成状态转换态转换状状态1/动作作1事件事件1/x状状态1事件事件2/动作作2事件事件3/段景山段景山14有限状态机的作用有限状态机的作用(1)n n指指导协议实现l l根据有限状根据有限状根据有限状根据有限状态态机形成状机形成状机形成状机形成状态转态转移表移表移表移表状态状态状态状态 事件事件事件事件动作动作动作动作命令:命令:命令:命令:OpenOpen事件事件事件事件2 2事件事件事件事件3 3事件事件事件事件n n关闭关闭关闭关闭处理处理处理处理发送:发送:发送:发送:ConnReqConnReq下一状态下一状态下一状态下一状态连接建立连接建立连接建立连接建立连接建立连接建立连接建立连接建立处理处理处理处理下一状态下一状态下一状态下一状态状态状态状态状态n n处理处理处理处理下一状态下一状态下一状态下一状态状态转移表状态转移表段景山段景山15状态转移表状态转移表n n停等停等协议的状的状态转移表移表准备准备发送帧发送帧0准备准备发送帧发送帧1发送帧发送帧发送帧发送帧0 0收到收到收到收到ACKACK发送帧发送帧发送帧发送帧1 1收到收到收到收到ACKACK重发帧重发帧重发帧重发帧0 0超时超时超时超时重发帧重发帧重发帧重发帧1 1超时超时超时超时状态状态状态状态 事件事件事件事件动作动作动作动作事件事件事件事件1 1事件事件事件事件2 2事件事件事件事件n n状态状态状态状态1 1处理处理处理处理下一状态下一状态下一状态下一状态状态状态状态状态2 2处理处理处理处理下一状态下一状态下一状态下一状态状态状态状态状态n n处理处理处理处理下一状态下一状态下一状态下一状态收到收到收到收到ACKACK超时超时超时超时准备发帧准备发帧准备发帧准备发帧0 0处理处理处理处理发送帧发送帧发送帧发送帧0 0重发帧重发帧重发帧重发帧1 1下一状态下一状态下一状态下一状态准备发帧准备发帧准备发帧准备发帧1 1/准备发帧准备发帧准备发帧准备发帧1 1处理处理处理处理发送帧发送帧发送帧发送帧1 1重发帧重发帧重发帧重发帧0 0下一状态下一状态下一状态下一状态准备发帧准备发帧准备发帧准备发帧0 0/段景山段景山16状态转移表状态转移表n n停等停等协议的状的状态转移表移表等待帧等待帧0等待帧等待帧1发送发送发送发送ACKACK收到帧收到帧收到帧收到帧0 0发送发送发送发送ACKACK收到帧收到帧收到帧收到帧1 1状态状态状态状态 事件事件事件事件动作动作动作动作事件事件事件事件1 1事件事件事件事件2 2事件事件事件事件n n状态状态状态状态1 1处理处理处理处理下一状态下一状态下一状态下一状态状态状态状态状态2 2处理处理处理处理下一状态下一状态下一状态下一状态状态状态状态状态n n处理处理处理处理下一状态下一状态下一状态下一状态收到帧收到帧收到帧收到帧0 0收到帧收到帧收到帧收到帧1 1等待帧等待帧等待帧等待帧0 0处理处理处理处理发送发送发送发送ACKACK/下一状态下一状态下一状态下一状态等待帧等待帧等待帧等待帧1 1/等待帧等待帧等待帧等待帧1 1处理处理处理处理发送发送发送发送ACKACK下一状态下一状态下一状态下一状态等待帧等待帧等待帧等待帧0 0段景山段景山17fsm程序框架程序框架n n根据状根据状态转移表形成移表形成fsm程序可能的框架程序可能的框架fsm(当前状当前状态,事件事件)switch(事件)事件)case 事件事件1:case 事件事件2:default:ignore;return next_state;action 1;next_state=xxx;main()state=initial;while(1)waite for a event;state=fsm(state,event);fsm.cif(当前状(当前状态=X)段景山段景山18改进的改进的fsm程序框架程序框架main()state=initial;while(1)waite for a event;switch(state)case X:state=x_fsm(event);case Y:state=y_fsm(event);x_fsm(事件事件)switch(事件)事件)case 事件事件1:case 事件事件2:default:ignore;return next_state;action 1;next_state=xxx;段景山段景山19有限状态机的设计有限状态机的设计n n事件的事件的产生生l l停等停等停等停等协议协议的事件的事件的事件的事件uu接收到数据:接收到数据:接收到数据:接收到数据:InformationInformation、ACKACKuu定定定定时时器器器器l l利用利用利用利用selectselect()()()()uu接收到数据接收到数据接收到数据接收到数据 readread事件事件事件事件进进一步判决一步判决一步判决一步判决为为InformationInformation、ACKACK等等等等uu定定定定时时 select timeout select timeout 超超超超时时计时计时 例:定例:定例:定例:定时时器器器器为为5 5秒,秒,秒,秒,timeouttimeout可可可可设为设为5 5秒,如果秒,如果秒,如果秒,如果selectselect返回返回返回返回值为值为0 0则认为则认为超超超超时时 或者或者或者或者timeouttimeout设为设为1 1秒,秒,秒,秒,连续连续五次五次五次五次selectselect返回返回返回返回值为值为0 0,则认为则认为超超超超时时。段景山段景山20有限状态机的设计有限状态机的设计main()state=initial;while(1)waite for a event;switch(state)case X:state=x_fsm(event);case Y:state=y_fsm(event);main()main()timeout=5;timeout=5;while(1)while(1)retval=select(,timeout);retval=select(,timeout);if(retval=0)if(retval=0)event=TIMEOUT;event=TIMEOUT;else if(FD_ISSET(s,read)else if(FD_ISSET(s,read)check the data type;check the data type;event=data type;event=data type;switch(state)switch(state)段景山段景山21停等协议的有限状态机设计停等协议的有限状态机设计n n事件定事件定事件定事件定义义l l#define EVENT_RECV0 1#define EVENT_RECV0 1l l#define EVENT_RECV1 2#define EVENT_RECV1 2l l#define EVENT_ACK#define EVENT_ACK3 3l l#define EVENT_TIME#define EVENT_TIME4 4n n状状状状态态定定定定义义l l#define STATE_SEND0#define STATE_SEND01 1l l#define STATE_SEND1#define STATE_SEND12 2l l#define STATE_RECV0#define STATE_RECV0 3 3l l#define STATE_RECV1#define STATE_RECV1 4 4段景山段景山22停等协议的有限状态机设计停等协议的有限状态机设计n nPDU设计n n事件事件产生生 retval=select(,timeout);retval=select(,timeout);if(retval=0)if(retval=0)event=TIMEOUT;event=TIMEOUT;else if(FD_ISSET(s,read)else if(FD_ISSET(s,read)check the data type;check the data type;event=data type;event=data type;struct PDUstruct PDUchar type;char type;char sequence_num;char sequence_num;char len;char len;char data100;char data100;sendbuf,recvbuf;sendbuf,recvbuf;recv(s,&recvbuf,len,0);recv(s,&recvbuf,len,0);if(recvbuf.type=FRAME_ACK)if(recvbuf.type=FRAME_ACK)event=EVENT_ACK;event=EVENT_ACK;else else if(recvbuf.if(recvbuf.sequence_numsequence_num=0)=0)event=EVENT_RECV0;event=EVENT_RECV0;event=EVENT_RECV1;event=EVENT_RECV1;段景山段景山停等协议的有限状态机设计停等协议的有限状态机设计n n停等停等协议缓冲区冲区设计l l发发送方:送方:送方:送方:uu单单个个个个帧帧的的的的发发送送送送缓缓冲冲冲冲 以以以以备备超超超超时时重重重重传时传时使用使用使用使用 struct PDU sendbuf;struct PDU sendbuf;l l接收接收接收接收方:方:方:方:uu单单个个个个帧帧的接收的接收的接收的接收缓缓冲冲冲冲 struct PDU recvbuf;struct PDU recvbuf;23段景山段景山n n事件事件处理(例:理(例:发送状送状态)24switch(state)switch(state)case STATE_SEND0:case STATE_SEND0:state=S0_fsm(event);state=S0_fsm(event);break;break;case STATE_SEND1:case STATE_SEND1:state=S1_fsm(event);state=S1_fsm(event);break;break;25int S0_fsm(int event)int S0_fsm(int event)int next_state;int next_state;next_state=STATE_SEND0;next_state=STATE_SEND0;switch(event)switch(event)case EVENT_ACK:case EVENT_ACK:sendbuf.len=fread(sendbuf.data,sizeof(char),sendbuf.len=fread(sendbuf.data,sizeof(char),sizeof(sendbuf.data),Fid);sizeof(sendbuf.data),Fid);sendbuf.sequence_num=1;sendbuf.sequence_num=1;sendbuf.type=FRAME_DATA;sendbuf.type=FRAME_DATA;send(sock,(char*)&sendbuf,sendbuf.len+HEADSIZE,0);send(sock,(char*)&sendbuf,sendbuf.len+HEADSIZE,0);next_state=STATE_SEND1;next_state=STATE_SEND1;break;break;case EVENT_TIMEOUT:case EVENT_TIMEOUT:/resend the buf/resend the bufsend(sock,(char*)&sendbuf,sendbuf.len+HEADSIZE,0);send(sock,(char*)&sendbuf,sendbuf.len+HEADSIZE,0);break;break;return next_state;return next_state;段景山段景山26停等协议的有限状态机设计停等协议的有限状态机设计n n事件事件处理(例,接收状理(例,接收状态)switch(state)switch(state)case STATE_RECV0:case STATE_RECV0:state=R0_fsm(event);state=R0_fsm(event);break;break;case STATE_RECV1:case STATE_RECV1:state=R1_fsm(event);state=R1_fsm(event);break;break;int R0_fsm(int event)int R0_fsm(int event)int next_state;int next_state;next_state=STATE_RECV0;next_state=STATE_RECV0;switch(event)switch(event)case EVENT_RECV0:case EVENT_RECV0:/duplicate frame/duplicate frameProgramLog(Dicard frame 0,Duplicate);ProgramLog(Dicard frame 0,Duplicate);/send ack/send acksendbuf.type=FRAME_ACK;sendbuf.type=FRAME_ACK;sendbuf.len=3;sendbuf.len=3;send(ns,(char*)&sendbuf,HEADSIZE,0);send(ns,(char*)&sendbuf,HEADSIZE,0);case EVENT_RECV1:case EVENT_RECV1:fwrite(recvbuf.data,sizeof(char),recvbuf.len,Fid);fwrite(recvbuf.data,sizeof(char),recvbuf.len,Fid);/send ack back/send ack backsendbuf.type=FRAME_ACK;sendbuf.type=FRAME_ACK;sendbuf.len=3;sendbuf.len=3;send(ns,(char*)&sendbuf,HEADSIZE,0);send(ns,(char*)&sendbuf,HEADSIZE,0);next_state=STATE_RECV1;next_state=STATE_RECV1;break;break;return next_state;return next_state;段景山段景山停等协议的有限状态机设计停等协议的有限状态机设计n n完善完善细节l l起始状起始状起始状起始状态态uu第一第一第一第一个个个个帧帧的的的的发发送是送是送是送是“没有没有没有没有”条件触条件触条件触条件触发发的的的的l l结结束状束状束状束状态态uu接收接收接收接收方需要知道方需要知道方需要知道方需要知道还还有没有新的数据有没有新的数据有没有新的数据有没有新的数据28段景山段景山案例:某嵌入式终端主控程序设计案例:某嵌入式终端主控程序设计n n需求需求l l界面控制界面控制界面控制界面控制29段景山段景山30段景山段景山n n需求需求l l功能控制功能控制功能控制功能控制31段景山段景山基于状态机的主控设计基于状态机的主控设计n n主程序架构主程序架构32段景山段景山n n事件事件驱动基本架构基本架构33段景山段景山n n状状态设计34序号名称说明界面宏定义1空 闲 状态系统进入的初始状态,输入动作被取消时的状态;欢迎页面ST_IDLE2设 置 状态用户按设置键,进入设置状态,具有多个子状态;设置页面ST_SET3编 辑 状态用户按编辑键,进入编辑状态;编辑页面ST_EDIT4等 待 回显状态向上位机发送数据后,等待上位机回显信息的状态。等待页面ST_WAIT5回 显 状态得到上位机数据,进行显示。有多个子状态;回显页面ST_SYSINFO段景山段景山n n状状态转移移图35段景山段景山n n状状态转移表移表36事件动作状态功能键或RFID扫描上位机数据数字编辑键确认(OK键)取消(返回键)设置键上下键左右键WLAN驱动文字菜单图片有编辑无编辑有编辑无编辑上下左右AP列表空闲组包上传;显示等待回显页面计算自动换行,滚动条,显示一屏静态回显页面计算滚动条,显示一屏交互回显页面(目前在picServer中接收图片,收完后会给命令解析发送命令,显示这个图片)。显示图片记录键值,显示编辑页面(不可能出现)组包上传;显示等待页面(不可能出现)组包上传;显示等待页面显示设置首页页面组包上传;显示等待页面组包上传;显示等待页面解释为空格,显示编辑页面记录列表等待回显/静态回显回 显/交互回显回显/静态回显编辑等待等待设 置/首页等待等待编辑设置首页组包上传;显示等待回显页面计算自动换行,滚动条,显示一屏静态回显页面计算滚动条,显示一屏交互回显页面(目前在picServer中)。显示图片修改焦点号,事件改为 确 认,再次进入状态机显示相应设置子页面或确认相应设置并显示编辑页面。如果是确认,在滚动区提示设置成功的信息。显示相应设置子页面或确认相应设置并显示空闲页面。如果是确认,在滚动区提示设置成功的信息。(取消图标上的确认键应解释为取消)显示编辑页面显示空闲页面“移动”焦点图标记录列表段景山段景山n n主程序主程序l lserver.cserver.c事件引擎事件引擎事件引擎事件引擎l lfsm.cfsm.c状状状状态态机核心机核心机核心机核心37段景山段景山半期考试半期考试n n普通普通普通普通班写小班写小班写小班写小论论文,教改班文,教改班文,教改班文,教改班完成完成完成完成课课程程程程总结总结和心得和心得和心得和心得n n小小小小论论文(半期考文(半期考文(半期考文(半期考试试成成成成绩评绩评定),主定),主定),主定),主题题从下列中从下列中从下列中从下列中选选一个或自一个或自一个或自一个或自拟拟l l讨论讨论事件事件事件事件驱动驱动机制与通信程序机制与通信程序机制与通信程序机制与通信程序设计设计l l讨论讨论有限状有限状有限状有限状态态机与机与机与机与协议设计协议设计和和和和实现实现l l讨论讨论通信程序通信程序通信程序通信程序设计设计的基本的基本的基本的基本结结构构构构l l讨论讨论异步异步异步异步选择选择机制与同步机制与同步机制与同步机制与同步选择选择机制机制机制机制n n字数要求字数要求字数要求字数要求1000300010003000l l按照科技按照科技按照科技按照科技论论文的一般格式:有文的一般格式:有文的一般格式:有文的一般格式:有题题目、摘要、关目、摘要、关目、摘要、关目、摘要、关键键词词,正文,参考文献,正文,参考文献,正文,参考文献,正文,参考文献l l表格和表格和表格和表格和图图要有要有要有要有标标号和名称。号和名称。号和名称。号和名称。38
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!