版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計課程名稱計算機(jī)網(wǎng)絡(luò)課程設(shè)計題目名稱文件傳輸協(xié)議的簡單設(shè)計與實(shí)現(xiàn)學(xué)生學(xué)院專業(yè)班級____學(xué)號學(xué)生姓名_______________指導(dǎo)教師___________2010年1月設(shè)計摘要關(guān)鍵詞:SOCKET編程,F(xiàn)TPclient/server程序摘要:本課程設(shè)計包含了文件傳輸協(xié)議的簡單設(shè)計與實(shí)現(xiàn)。文件傳送是各種計算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)的根本功能,文件傳送協(xié)議是一種最根本的應(yīng)用層協(xié)議按照客戶/效勞器的模式進(jìn)行工作,提供交互式的訪問,是INTERNET使用最廣泛的協(xié)議之一。文件傳輸協(xié)議的簡單設(shè)計與實(shí)現(xiàn)建立在計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)之上,使〕,實(shí)現(xiàn)下述命令功能:get,put,pwd,dir,cd,?,quit等,利用了已有網(wǎng)絡(luò)環(huán)境設(shè)計并實(shí)現(xiàn)簡單應(yīng)用層協(xié)議。本設(shè)計包括了具體設(shè)計任務(wù),根本思路及所涉及的相關(guān)理論,設(shè)計流程圖,調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決方法,實(shí)驗(yàn)運(yùn)行結(jié)果,核心程序,個人體會及建議等。目錄1、文件傳輸協(xié)議的簡單設(shè)計與實(shí)現(xiàn)------------------------------181.1具體設(shè)計任務(wù)----------------------------------------------181.2根本思路及所涉及的相關(guān)理論--------------------------------181根本思路-------------------------------------------------18相關(guān)理論--------------------------------------------181.3設(shè)計流程圖------------------------------------------------191.4實(shí)驗(yàn)運(yùn)行情況----------------------------------------------191.5核心程序--------------------------------------------------22效勞器〔sever〕程序---------------------------------22客戶〔client〕程序----------------------------------291.6心得體會-----------------------------------------------------------------------------37參考文獻(xiàn)--------------------------------------------------------382、文件傳輸協(xié)議的簡單設(shè)計與實(shí)現(xiàn)2.1具體設(shè)計任務(wù)計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境建立在TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)之上。各計算機(jī)除了安裝TCP/IP軟件外,還安裝了TCP/IP開發(fā)系統(tǒng)。實(shí)驗(yàn)室各計算機(jī)具備Windows環(huán)境中套接字socket的編程接口功能,可為用戶提供全網(wǎng)范圍的進(jìn)程通信功能。本實(shí)驗(yàn)要求利用這些功能,設(shè)計和實(shí)現(xiàn)一個簡單的文件傳送協(xié)議。用socket編程接口編寫兩個程序,分別為客戶程序(client.c)和效勞器程序〔server.c〕,該程序應(yīng)能實(shí)現(xiàn)下述命令功能:get:取遠(yuǎn)方的一個文件put:傳給遠(yuǎn)方一個文件pwd:顯示遠(yuǎn)主當(dāng)前目錄dir:列出遠(yuǎn)方當(dāng)前目錄cd:改變遠(yuǎn)方當(dāng)前目錄?:顯示你提供的命令quit:退出返回根本思路及所涉及的相關(guān)理論.1根本思路設(shè)計程序使客戶端連接的時候,效勞器將會向客戶端發(fā)回一條消息告知它的IP地址,然后關(guān)閉連接并繼續(xù)接收端口的連接。建立各個命令功能對應(yīng)的函數(shù),發(fā)送請求,等待效勞器端的效勞。效勞器端初始化WinSock,創(chuàng)立SOCKET,獲取主機(jī)信息,并對客戶端進(jìn)行會話,發(fā)送回復(fù)訊息給客戶端,響應(yīng)完畢后關(guān)閉連接,釋放WinSock。.2文件傳送是各種計算機(jī)網(wǎng)絡(luò)都實(shí)現(xiàn)的根本功能,文件傳送協(xié)議是一種最根本的應(yīng)用層協(xié)議按照客戶/效勞器的模式進(jìn)行工作,提供交互式的訪問,是INTERNET使用最廣泛的協(xié)議之一。計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境建立在TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)之上。各計算機(jī)除了安裝TCP/IP軟件外,還安裝了TCP/IP開發(fā)系統(tǒng)。實(shí)驗(yàn)室各計算機(jī)具備Windows環(huán)境中套接字socket的編程接口功能,可為用戶提供全網(wǎng)范圍的進(jìn)程通信功能。本設(shè)計利用這些功能,設(shè)計和實(shí)現(xiàn)一個簡單的文件傳送協(xié)議。用socket編程接口編寫兩個程序,分別為客戶程序(client.c)和效勞器程序〔server.c〕。2.3設(shè)計流程圖效勞器端運(yùn)行,默認(rèn)自動啟動監(jiān)聽,情況如下列圖:效勞如果關(guān)閉監(jiān)聽,效果如下列圖:客服端運(yùn)行,如下列圖:輸入效勞器端的IP和端口號進(jìn)行連接,效果如圖:下面設(shè)置文件保存位置,如圖:下面演示上傳一個視頻文件,然后再下載下來,其中上傳過程的進(jìn)度信息:上傳完成后的效果圖:下載文件的進(jìn)度提示信息:下載完成后,指定目錄下就有了該文件了:2.5核心程序效勞器〔server〕程序如下usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.IO;usingSystem.Windows.Forms;namespaceTCP文件傳輸_效勞器{classWorkThread{byte[]buffer;intbufferSize=4096;Threadmythread;Sockethandler;publicWorkThread(SocketworkSocket){handler=workSocket;buffer=newbyte[bufferSize];mythread=newThread(BeginCommunication);}publicvoidStart(){mythread.Start();}publicvoidAbort(){mythread.Abort();}privatevoidBeginCommunication(){while(true)//從客戶端接收數(shù)據(jù),直到連接斷開{try{intreCount=handler.Receive(buffer);stringinsStr=Encoding.BigEndianUnicode.GetString(buffer,0,reCount);if(insStr.Substring(0,4)=="name")//收到下文件請求{stringfileName=insStr.Substring(5,insStr.Length-5);SendFile(fileName,handler);}elseif(insStr.Substring(0,4)=="boot")//收到獲取根目錄請求{stringlistStr=GetFileNames("F:",false);SendString(handler,listStr);}elseif(insStr.Substring(0,4)=="path")//收到獲取指定目錄內(nèi)容請求{stringpath=insStr.Substring(5,insStr.Length-5);stringlistStr=GetFileNames(path,false);SendString(handler,listStr);}elseif(insStr.Substring(0,4)=="Queu")//獲取下載文件夾請求,回復(fù)完整文件名列表{stringpath=insStr.Substring(5,insStr.Length-5);stringlistStr=GetFileNames(path,true);SendString(handler,listStr);}elseif(insStr.Substring(0,4)=="upld")//收到上傳文件請求{stringreFileName=insStr.Substring(5,insStr.Length-5);LoadFile(reFileName,handler);}elseif(insStr.Substring(0,4)=="quit")//收到斷開連接命令{HostQuit();break;}}catch{HostQuit();break;}}}privatevoidLoadFile(stringreFileName,Sockethandler){try{FileStreamfs=newFileStream(reFileName,FileMode.Create,FileAccess.Write);handler.Receive(buffer,8,SocketFlags.None);//接收文件大小longfilesize=BitConverter.ToInt64(buffer,0);longreceiveCount=0;while(receiveCount<filesize)//接收文件{intreadcount=handler.Receive(buffer,bufferSize,SocketFlags.None);fs.Write(buffer,0,readcount);receiveCount+=readcount;}fs.Close();}catch{HostQuit();}}privatevoidSendFile(stringfileNmae,Sockethandler){try{FileStreamfs=newFileStream(fileNmae,FileMode.Open,FileAccess.Read);longsize=fs.Length;byte[]bysize=BitConverter.GetBytes(size);handler.Send(bysize,8,SocketFlags.None);//發(fā)送文件大小BinaryReaderbr=newBinaryReader(fs);intsendcount=0;while(sendcount<size)//發(fā)送文件{intreadcount=br.Read(buffer,0,bufferSize);sendcount+=readcount;handler.Send(buffer,readcount,SocketFlags.None);}}catch{HostQuit();}}privatevoidHostQuit(){GlobalValues.canControl.WaitOne();GlobalValues.canControl.Release();if(handler.Connected==true){handler.Shutdown(SocketShutdown.Both);handler.Close();}}privatevoidSendString(Sockethandler,stringlistStr){byte[]list=Encoding.BigEndianUnicode.GetBytes(listStr);byte[]listcountbuffer=BitConverter.GetBytes(Convert.ToInt64(list.Length));try{handler.Send(listcountbuffer,8,SocketFlags.None);//發(fā)送列表大小intsendcount=0;while(sendcount<list.Length)//發(fā)送列表{if(sendcount+bufferSize<list.Length)//不是最后一次{inti=handler.Send(list,sendcount,bufferSize,SocketFlags.None);sendcount+=i;}else{inti=handler.Send(list,sendcount,list.Length-sendcount,SocketFlags.None);//發(fā)送最后一次sendcount+=i;}}}catch(Exceptione){MessageBox.Show("連接斷開.");}}//fileOnly=true那么獲取指定目錄及子目錄內(nèi)所有文件信息,fileOnly=false那么獲取指定目錄文件信息及文件夾信息privatestringGetFileNames(stringpath,boolfileOnly){stringlistStr=string.Empty;DirectoryInfodrct=newDirectoryInfo(path);foreach(FileSystemInfofsiindrct.GetFileSystemInfos()){if(fsiisFileInfo){//文件FileInfofi=(FileInfo)fsi;listStr+=fi.FullName;listStr+="\n";if(fi.Length<1024){stringsizeStr=fi.Length.ToString()+"字節(jié)";listStr+=sizeStr;}elseif(fi.Length<1024*1024){doubletemp=Convert.ToDouble(fi.Length)/1024;stringsizeStr=string.Format("{0:F1}",temp)+"KB";listStr+=sizeStr;}elseif(fi.Length<1024*1024*1024){doubletemp=Convert.ToDouble(fi.Length)/1024/1024;stringsizeStr=string.Format("{0:F1}",temp)+"MB";listStr+=sizeStr;}else{doubletemp=Convert.ToDouble(fi.Length)/1024/1024/1024;stringsizeStr=string.Format("{0:F1}",temp)+"GB";listStr+=sizeStr;}listStr+="\n";listStr+=fi.LastWriteTime.ToString("yyyy-MM-ddhh:mm:ss");listStr+="\n";}elseif(fsiisDirectoryInfo){if(fileOnly){listStr+=GetFileNames(fsi.FullName,true);}else{//文件夾DirectoryInfodi=(DirectoryInfo)fsi;listStr+=di.FullName;listStr+="\n";listStr+="dir";listStr+="\n";listStr+=di.LastWriteTime.ToString("yyyy-MM-ddhh:mm:ss");listStr+="\n";}}}returnlistStr;}}}public效勞器(){InitializeComponent();Control.CheckForIllegalCrossThreadCalls=false;stringHostName=Dns.GetHostName();//得到主機(jī)名IPHostEntryIpEntry=Dns.GetHostEntry(HostName);//得到主機(jī)IPstringstrIPAddr=IpEntry.AddressList[0].ToString();tsTxb_IPAdd.Text=strIPAddr;hostIPAddress=IPAddress.Parse(strIPAddr);Server=newIPEndPoint(hostIPAddress,Convert.ToInt32(tsTxb_Port.Text));sock=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);sock.Bind(Server);sock.Listen(10);stringstr="正在監(jiān)聽端口"+tsTxb_Port.Text+"...";tsLbl_Status.Text="狀態(tài):"+str;AcceptTh=newThread(ThAccept);AcceptTh.Start();//開始監(jiān)聽端口}//下面是監(jiān)聽和停止監(jiān)聽的按鈕事件privatevoidbtn_Start_Click(objectsender,EventArgse){tsBtn_Start.Enabled=false;tsBtn_Stop.Enabled=true;Server=newIPEndPoint(hostIPAddress,Convert.ToInt32(tsTxb_Port.Text));sock=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);sock.Bind(Server);sock.Listen(10);stringstr="正在監(jiān)聽端口"+tsTxb_Port.Text+"...";tsLbl_Status.Text="狀態(tài):"+str;AcceptTh=newThread(ThAccept);AcceptTh.Start();}privatevoidbtn_stop_Click(objectsender,EventArgse){tsBtn_Start.Enabled=true;tsBtn_Stop.Enabled=false;try{sock.Shutdown(SocketShutdown.Both);}catch{}sock.Close();tsLbl_Status.Text="狀態(tài):已停止監(jiān)聽";}客戶〔client〕程序usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.IO;usingSystem.Net.Sockets;usingSystem.Threading;usingSystem.Windows.Forms;namespace客戶端_TCP文件傳輸{publicclassmyThread{ThreaddownloadTh;ThreaduploadTh;SocketwordSocket;stringfileName;stringsavePath;byte[]buffer;constintbufferSize=4096;ToolStripProgressBartspBar;ToolStripStatusLabelspeed;intstartTime=0;longreceivecount=0;longsendCount=0;intupOrDown=1;//指示上傳或下載System.Windows.Forms.Timertimer1=newSystem.Windows.Forms.Timer();publicmyThread(SocketworkSock,stringFileName,stringSavePath,refToolStripProgressBarTspBar,refToolStripStatusLabelSpeed){wordSocket=workSock;fileName=FileName;savePath=SavePath;buffer=newbyte[bufferSize];downloadTh=newThread(newThreadStart(Download));uploadTh=newThread(newThreadStart(Upload));tspBar=TspBar;speed=Speed;}publicmyThread(SocketworkSock,stringFileName,refToolStripProgressBarTspBar,refToolStripStatusLabelSpeed){wordSocket=workSock;fileName=FileName;buffer=newbyte[bufferSize];downloadTh=newThread(newThreadStart(Download));uploadTh=newThread(newThreadStart(Upload));tspBar=TspBar;speed=Speed;}publicvoidStartDownload(){upOrDown=1;downloadTh.Start();timer1.Enabled=true;timer1.Interval=100;timer1.Tick+=newEventHandler(timer1_Tick);startTime=System.Environment.TickCount;timer1.Start();}publicvoidStartUpload(){upOrDown=0;uploadTh.Start();timer1.Enabled=true;timer1.Interval=50;timer1.Tick+=newEventHandler(timer1_Tick);startTime=System.Environment.TickCount;timer1.Start();}voidtimer1_Tick(objectsender,EventArgse){intspentTime=System.Environment.TickCount-startTime;if(spentTime!=0){if(upOrDown==1){doublesp=Convert.ToDouble(receivecount)/Convert.ToDouble(spentTime)*1000/1024;if(sp<1024)speed.Text=tspBar.Value.ToString()+"%下載速度:"+string.Format("{0:F1}",sp)+"KB";elsespeed.Text=tspBar.Value.ToString()+"%下載速度:"+string.Format("{0:F1}",sp/1024)+"MB/S";}else{doublesp=Convert.ToDouble(sendCount)/Convert.ToDouble(spentTime)*1000/1024;if(sp<1024)speed.Text=tspBar.Value.ToString()+"%上傳速度:"+string.Format("{0:F1}",sp)+"KB";elsespeed.Text=tspBar.Value.ToString()+"%上傳速度:"+string.Format("{0:F1}",sp/1024)+"MB/S";}}}privatevoidDownload(){try{stringins="name="+fileName;byte[]data=Encoding.BigEndianUnicode.GetBytes(ins);wordSocket.Send(data,data.Length,SocketFlags.None);//發(fā)送下載請求stringreFileName=savePath+"\\"+GetFileName(fileName);Directory.CreateDirectory(savePath);FileStreamfs=newFileStream(reFileName,FileMode.Create,FileAccess.Write);wordSocket.Receive(buffer,8,SocketFlags.None);//接收文件大小longfilesize=BitConverter.ToInt64(buffer,0);while(receivecount<filesize)//接收文件{intreadcount=wordSocket.Receive(buffer,bufferSize,SocketFlags.None);fs.Write(buffer,0,readcount);receivecount+=readcount;tspBar.Value=Convert.ToInt32(Convert.ToDouble(receivecount)/Convert.ToDouble(filesize)*100);}tspBar.Value=100;timer1_Tick(newobject(),newEventArgs());fs.Close();timer1.Stop();StaticValue.isBusy=false;}catch{MessageBox.Show("連接斷開.");timer1.Stop();if(wordSocket.Connected==true){wordSocket.Shutdown(SocketShutdown.Both);wordSocket.Close();timer1.Stop();StaticValue.isBusy=false;}}}privatevoidUpload(){try{stringshortFileName=fileName.Substring(fileName.LastIndexOf('\\')+1,fileName.Length-fileName.LastIndexOf('\\')-1);stringserverFileName=StaticValue.curServerPath+"\\"+shortFileName;//指定上傳到效勞器的哪個路徑stringins="upld="+serverFileName;byte[]byins=Encoding.BigEndianUnicode.GetBytes(ins);wordSocket.Send(byins,byins.Length,SocketFlags.None);//發(fā)送上傳請求及完整文件名FileStreamfs=newFileStream(fileName,FileMode.Open,FileAccess.Read);longsize=fs.Length;byte[]bysize=BitConverter.GetBytes(size);wordSocket.Send(bysize,8,SocketFlags.None);//發(fā)送上傳文件大小BinaryReaderbr=newBinaryReader(fs);while(sendCount<size)//發(fā)送文件{intreadcount=br.Read(buffer,0,bufferSize);sendCount+=readcount;wordSocket.Send(buffer,readcount,SocketFlags.None);tspBar.Value=Convert.ToInt32(Convert.ToDouble(sendCount)/Convert.ToDouble(size)*100);}tspBar.Value=100;timer1_Tick(newobject(),newEventArgs());fs.Close();timer1.Stop();StaticValue.isBusy=false;}catch(Exceptione){MessageBox.Show("連接斷開.");wordSocket.Shutdown(SocketShutdown.Both);wordSocket.Close();timer1.Stop();StaticValue.isBusy=false;}}publicstringGetFileName(stringfileName){returnfileName.Substring(fileName.LastIndexOf('\\')+1,fileName.Length-fileName.LastIndexOf('\\')-1);}publicstringGetFileType(stringfileName){returnfileName.Substring(fileName.LastIndexOf('.'),fileName.Length-fileName.LastIndexOf('.'));}}}//下面給出各按鈕點(diǎn)擊事件///<summary>///連接效勞器按鈕點(diǎn)擊事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbtn_Connect_Click(objectsender,EventArgse){hostIPAddress=IPAddress.Parse(ttxb_IPAdd.Text);intport=Convert.ToInt32(ttxb_port.Text);Server=newIPEndPoint(hostIPAddress,port);sock=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);try{sock.Connect(Server);//連接效勞器toolStripStatusLabel1.Text="與遠(yuǎn)程主機(jī)"+ttxb_IPAdd.Text+""+ttxb_port.ToString()+"連接成功";RefreshListView(GetDtListArray("boot",false));//獲取效勞器根目錄connectDone=true;tsBtn_Connect.Enabled=false;tsBtn_DisConnect.Enabled=true;}catch{MessageBox.Show("連接失敗.");if(sock.Connected==true){sock.Shutdown(SocketShutdown.Both);sock.Close();}}}///<summary>///下載文件點(diǎn)擊事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbtn_GetFile_Click(objectsender,EventArgse){DownLoad(listView1);//調(diào)用自定義方法下載文件}privatevoidDownLoad(ListViewlistView1){if(listView1.SelectedIndices.Count>0&&listView1.SelectedIndices[0]!=0)//有選定項且選定的不是"返回上層"{stringsize=listView1.SelectedItems[0].SubItems[1].Text;if(size!="")//如果選定的是文件{listView2.Items.Add(listView1.SelectedItems[0].SubItems[0].Text);listView2.Items[listView2.Items.Count-1].SubItems.Add(size);//將文件大小參加listViewlistView2.Items[listView2.Items.Count-1].ImageIndex=ICOSearcher.GetIcoIndex(listView1.SelectedItems[0].SubItems[0].Text);//獲取該文件的圖標(biāo)intindex=listView1.SelectedIndices[0]-1;stringFileName=fullNameList[index];downloadItemnewfile=newdownloadItem(FileName,StaticValue.curSavePath);downQueue.Enqueue(newfile);}else//如果是文件夾{stringdownPath=StaticValue.curServerPath+"\\"+listView1.SelectedItems[0].SubItems[0].Text;string[]listArray=GetDtListArray(downPath,true);Queue<downloadItem>tempQueue=GetDownFileQueue(listArray);while(tempQueue.Count>0){downQueue.Enqueue(tempQueue.Dequeue());}}}}///<summary>///設(shè)置保存位置的按鈕點(diǎn)擊事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidtsBtn_savePath_Click(objectsender,EventArgse){if(folderBrowserDialog1.ShowDialog()==DialogResult.OK){StaticValue.curSavePath=folderBrowserDialog1.SelectedPath;}}///<summary>///點(diǎn)擊斷開連接的按鈕事件,斷開連接,并清空listView等///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidtsBtn_DisConnect_Click(objectsender,EventArgse)//{try{stringins="quit";byte[]byins=Encoding.BigEndianUnicode.GetBytes(ins);sock.Send(byins,byins.Length,SocketFlags.None);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五電影制作保密合同范本6篇
- 二零二五版木材行業(yè)碳排放權(quán)交易合同范本8篇
- 2025年個人住宅房產(chǎn)抵押擔(dān)保合同范本
- 課題申報參考:內(nèi)感受干預(yù)促進(jìn)青少年情緒能力的神經(jīng)基礎(chǔ)
- 課題申報參考:民事訴訟法的基礎(chǔ)理論和基本制度研究
- 2025年度住宅小區(qū)停車位共有產(chǎn)權(quán)轉(zhuǎn)讓合同范本
- 2025年個人房產(chǎn)繼承權(quán)轉(zhuǎn)讓合同范本2篇
- 2025版農(nóng)機(jī)具租賃與智能灌溉系統(tǒng)合同4篇
- 二零二五版美容美發(fā)院加盟店會員管理與服務(wù)合同4篇
- 2025年度高端建筑用熱鍍鋅鋼管采購合同3篇
- DB43-T 3022-2024黃柏栽培技術(shù)規(guī)程
- 成人失禁相關(guān)性皮炎的預(yù)防與護(hù)理
- 九宮數(shù)獨(dú)200題(附答案全)
- 人員密集場所消防安全管理培訓(xùn)
- 《聚焦客戶創(chuàng)造價值》課件
- PTW-UNIDOS-E-放射劑量儀中文說明書
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹脂耐腐蝕立式貯罐
- 保險學(xué)(第五版)課件全套 魏華林 第0-18章 緒論、風(fēng)險與保險- 保險市場監(jiān)管、附章:社會保險
- 典范英語2b課文電子書
- 員工信息登記表(標(biāo)準(zhǔn)版)
- 春節(jié)工地停工復(fù)工計劃安排( 共10篇)
評論
0/150
提交評論