版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、東南大學(xué)自動(dòng)化學(xué)院實(shí) 驗(yàn) 報(bào) 告課程名稱(chēng): 信息通信網(wǎng)絡(luò)概論 第3次實(shí)驗(yàn)實(shí)驗(yàn)名稱(chēng): 實(shí)驗(yàn)三 基于客戶/服務(wù)器模式的網(wǎng)絡(luò)通信編程實(shí)現(xiàn) 院 (系): 自動(dòng)化 專(zhuān) 業(yè): 自動(dòng)化 姓 名: XXX 學(xué) 號(hào): 08016XXX 實(shí) 驗(yàn) 室: 金智樓 實(shí)驗(yàn)組別: 同組人員: 實(shí)驗(yàn)時(shí)間: 2018年 5月21 日評(píng)定成績(jī): 審閱教師: 目 錄一實(shí)驗(yàn)?zāi)康暮鸵?二實(shí)驗(yàn)原理3三實(shí)驗(yàn)方案與實(shí)驗(yàn)步驟4四實(shí)驗(yàn)設(shè)備與器材配置7五實(shí)驗(yàn)記錄7六實(shí)驗(yàn)總結(jié)9七思考題或討論題9一 實(shí)驗(yàn)?zāi)康暮鸵?. 進(jìn)一步了解網(wǎng)絡(luò)編程的過(guò)程;2. 掌握Windows環(huán)境下基于WinSock的編程方法和通信實(shí)現(xiàn); 3. 熟悉客戶/服務(wù)器模式的網(wǎng)絡(luò)
2、通信編程實(shí)現(xiàn),編寫(xiě)一個(gè)聊天工具,即以客戶端和服務(wù)器端的模式進(jìn)行互發(fā)消息。二 實(shí)驗(yàn)原理一個(gè)在建立分布式應(yīng)用時(shí)最常用的范例便是客戶機(jī)/服務(wù)器模型。在這種方案中客戶應(yīng)用程序向服務(wù)器程序請(qǐng)求服務(wù)。這種方式隱含了在建立客戶機(jī)/服務(wù)器間通訊時(shí)的非對(duì)稱(chēng)性。客戶機(jī)/服務(wù)器模型工作時(shí)要求有一套為客戶機(jī)和服務(wù)器所共識(shí)的慣例來(lái)保證服務(wù)能夠被提供(或被接受)。這一套慣例包含了一套協(xié)議。它必須在通訊的兩頭都被實(shí)現(xiàn)。根據(jù)不同的實(shí)際情況,協(xié)議可能是對(duì)稱(chēng)的或是非對(duì)稱(chēng)的。在對(duì)稱(chēng)的協(xié)議中,每一方都有可能扮演主從角色;在非對(duì)稱(chēng)協(xié)議中,一方被不可改變地認(rèn)為是主機(jī),而另一方則是從機(jī)。一個(gè)對(duì)稱(chēng)協(xié)議的例子是Internet中用于終端仿真的
3、TELNET。而非對(duì)稱(chēng)協(xié)議的例子是Internet中的FTP。無(wú)論具體的協(xié)議是對(duì)稱(chēng)的或是非對(duì)稱(chēng)的,當(dāng)服務(wù)被提供時(shí)必然存在“客戶進(jìn)程”和“服務(wù)進(jìn)程”。 一個(gè)服務(wù)程序通常在一個(gè)眾所周知的地址監(jiān)聽(tīng)對(duì)服務(wù)的請(qǐng)求,也就是說(shuō),服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個(gè)客戶對(duì)這個(gè)服務(wù)的地址提出了連接請(qǐng)求。在這個(gè)時(shí)刻,服務(wù)程序被“驚醒”并且為客戶提供服務(wù)對(duì)客戶的請(qǐng)求作出適當(dāng)?shù)姆磻?yīng)。這一請(qǐng)求/相應(yīng)的過(guò)程可以簡(jiǎn)單的用圖2-1表示。雖然基于連接的服務(wù)是設(shè)計(jì)客戶機(jī)/服務(wù)器應(yīng)用程序時(shí)的標(biāo)準(zhǔn),但有些服務(wù)也是可以通過(guò)數(shù)據(jù)報(bào)套接口提供的。圖2-1 客戶機(jī)/服務(wù)器模型三 實(shí)驗(yàn)方案與實(shí)驗(yàn)步驟1、 客戶機(jī)/服務(wù)器工作流程圖3.1 客戶機(jī)/
4、服務(wù)器工作流程2、 聊天室的工作流程圖3.2 聊天室工作流程首先,服務(wù)器要?jiǎng)?chuàng)建一個(gè)用于偵聽(tīng)的套接字,為該套接字分配地址之后,調(diào)用listen()函數(shù)使它處于偵聽(tīng)狀態(tài);客戶機(jī)在創(chuàng)建套接字完畢后,為套接字分配地址,然后調(diào)用connect()函數(shù),請(qǐng)求與服務(wù)器套接字連接;服務(wù)器套接字在收到客戶機(jī)的連接請(qǐng)示后,調(diào)用accept()函數(shù),該函數(shù)創(chuàng)建一個(gè)用于連接的套接字。應(yīng)用該套接字和客戶機(jī)上的連接套接字,用戶就可以在服務(wù)器和客戶機(jī)之間進(jìn)行數(shù)據(jù)傳輸了。在結(jié)束傳輸之后,客戶機(jī)調(diào)用closesocket()函數(shù)關(guān)閉套接字,服務(wù)器也調(diào)用該函數(shù)關(guān)閉用于偵聽(tīng)和連接的套接字。3、 套接字事件處理相關(guān)函數(shù)OnAccep
5、t():監(jiān)聽(tīng)套接字在斷口聽(tīng)到連接請(qǐng)求時(shí),應(yīng)用程序框架調(diào)用該函數(shù)以告之可以接受或拒絕連接請(qǐng)求,調(diào)用Accept來(lái)接受請(qǐng)求,建立連接。OnConnect():當(dāng)客戶端套接字連接請(qǐng)求完成后,應(yīng)用程序框架調(diào)用該函數(shù),告之是否成功。OnSend():框架調(diào)用該函數(shù)通知該套接字現(xiàn)在可以調(diào)用Send函數(shù)開(kāi)始傳送數(shù)據(jù)。OnReceive():框架調(diào)用該函數(shù)通知套接字可以調(diào)用Receive函數(shù)從數(shù)據(jù)緩沖區(qū)中取數(shù)據(jù)。OnClose():框架調(diào)用該函數(shù)告之與其相連的對(duì)方套接字已被關(guān)閉。4、 系統(tǒng)實(shí)現(xiàn)圖3.3 系統(tǒng)實(shí)現(xiàn)過(guò)程實(shí)驗(yàn)具體步驟如下: 1) 利用 MFC AppWizard 生成程序框架 在Visual C+的
6、IDE環(huán)境下選擇菜單File NewProjects MFC AppWizard(exe) Project Name“OK”“NEXT”Windows Sockets“ Finish”按鈕,選擇“OK” 按鈕,應(yīng)用程序的框架就將自動(dòng)創(chuàng)建。2) 增加控件對(duì)象 在創(chuàng)建了應(yīng)用程序框架之后,可以布置程序的主對(duì)話框,向應(yīng)用程序的主對(duì)話框添 加控件。設(shè)計(jì)好了對(duì)話框之后,選取 View 菜單中的 ClassWizard 菜單項(xiàng),或直接按 “Ctrl+W ”,打開(kāi) MFC ClassWizard,將對(duì)話框中的控件和變量相關(guān)聯(lián)。3) 從 CAsyncSocket 類(lèi)繼承 選擇Insert菜單中的New Clas
7、s選取Class type為Generic Class在Base class 的 Derived From 列中輸入 CAsyncSocket,在 As 列中接受默認(rèn)值 public,點(diǎn)擊” OK”按鈕,就可以把這個(gè)新創(chuàng)建的類(lèi)添加到應(yīng)用程序中。 向該套接字類(lèi)中添加一個(gè)成員變量,用作指向父對(duì)話框窗口的指針,指針變量的類(lèi) 型為 CTalkDlg*(Cdialog 的派生類(lèi)),變量名為 m_pDlg,訪問(wèn)權(quán)限為私有。最后,添加套接字類(lèi)事件處理函數(shù),這些函數(shù)將用于調(diào)用對(duì)話框中名稱(chēng)類(lèi)似的那些函數(shù)。4) 建立客戶機(jī)與服務(wù)器之間的連接 為了完成連接,需要添加對(duì)套接字事件的處理函數(shù),在對(duì)話框類(lèi)中添加 OnAc
8、cept() 事件處理函數(shù)和 OnConnect()事件處理函數(shù)。 如果現(xiàn)在可以編譯和運(yùn)行應(yīng)用程序,就可以啟動(dòng)兩個(gè)副本,把其中一個(gè)設(shè)置為偵聽(tīng) 模式,然后把另一個(gè)應(yīng)用程序與之相連接。為此,先向?qū)υ捒蝾?lèi)()添加三個(gè)成員函數(shù), 這三個(gè)函數(shù)是套接字類(lèi)()的事件處理函數(shù)需要調(diào)用的。把三個(gè)函數(shù)的類(lèi)型都指定為 void,訪問(wèn)權(quán)限為公共。指定第一個(gè)函數(shù)聲明為 OnSend(),第二個(gè)函數(shù)的聲明為 OnReceive,第三函數(shù)的聲明為 OnClose。5) 發(fā)送和接收數(shù)據(jù) 如果兩個(gè)應(yīng)用程序間建立了連接,用戶就能夠在對(duì)話框窗口中的編輯框中輸入文本 消息,然后單擊“發(fā)送”按鈕,就應(yīng)該可以把消息發(fā)送到另一個(gè)應(yīng)用程序,
9、一旦消息發(fā) 送出去了,它將被添加到已發(fā)送消息的列表框中。 當(dāng)“發(fā)送”按鈕被單擊之后,應(yīng)用程序需要檢查是否有消息輸入了編輯框,獲取該 消息的長(zhǎng)度,并發(fā)送該消息,然后把此消息添加到列表框中。為了在應(yīng)用程序中添加此 項(xiàng)功能,使用Class Wizard向“發(fā)送”按鈕(ID:IDOK)的單擊事件(BNCLICKED)添加 一個(gè)事件處理函數(shù),注意不要接受默認(rèn)的函數(shù)名,將函數(shù)名改成OnSendMsg(),編輯該 函數(shù)。 對(duì)于消息的接收方,當(dāng)套接字的OnReceive事件被觸發(fā)時(shí),表明一個(gè)消息已經(jīng)到達(dá) 了,可以用Receive()函數(shù)從套接字檢索到該消息。如果消息被順利檢索到,需要把接 收的字符數(shù)組轉(zhuǎn)換成C
10、string類(lèi)型,并把接收的消息添加到已接收的消息的列表框中。 通過(guò)編輯對(duì)話框類(lèi)的OnReceive()函數(shù)。6) 終止連接 結(jié)束消息傳送之后應(yīng)該終止兩個(gè)應(yīng)用程序之間的連接,這個(gè)終止連接的操作是由客 戶機(jī)應(yīng)用程序的用戶通過(guò)單擊“斷開(kāi)”按鈕來(lái)實(shí)現(xiàn)的。然后應(yīng)用程序會(huì)接收到一個(gè) OnClose套接字事件。和建立連接的過(guò)程相反,連接的套接字需要斷開(kāi),發(fā)送消息的控 件需要置為禁用狀態(tài)。在客戶端,“連接”按鈕控件由禁用狀態(tài)變成可用,因?yàn)閼?yīng)用程序允許客戶機(jī)程序改變某些參數(shù),并打開(kāi)與另一個(gè)服務(wù)器程序的連接。同時(shí),服務(wù)器應(yīng)用程序繼續(xù)偵聽(tīng)是否有其他的連接請(qǐng)求,偵聽(tīng)的端口等信息不變。四 實(shí)驗(yàn)設(shè)備與器材配置1、能連網(wǎng)
11、的個(gè)人PC機(jī)一臺(tái)。2、Visual C+ 6.0 軟件五 實(shí)驗(yàn)記錄1、用戶界面1) 選擇類(lèi)型:客戶機(jī)/服務(wù)器;2) 輸入部分:服務(wù)器名稱(chēng)、服務(wù)器端口、待發(fā)送消息;3) 輸出部分:已發(fā)送的消息、接收到的消息、文件內(nèi)容;4) 按鈕:連接/偵聽(tīng)、斷開(kāi)、發(fā)送、上傳文件、清空。2、功能測(cè)試記錄實(shí)驗(yàn)中以同一臺(tái)電腦作為服務(wù)器和客戶機(jī)進(jìn)行模擬,并分別從兩個(gè)窗口發(fā)送信息至 對(duì)方,顯示如下可見(jiàn),可以成功進(jìn)行通訊。此外,我們還可以通過(guò)修改代碼,實(shí)現(xiàn)斷開(kāi)程序的功能。并實(shí)現(xiàn)自動(dòng)清空。六 實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn),在老師提供的示例代碼和參考資料的基礎(chǔ)上,我們實(shí)現(xiàn)了客戶機(jī)和服務(wù)器間的通訊,此外我們對(duì)代碼進(jìn)行修改,能夠通過(guò)“斷開(kāi)”真
12、正實(shí)現(xiàn)斷開(kāi)功能。由于能力不夠,還不能實(shí)現(xiàn)如圖片傳輸和文件傳輸?shù)墓δ埽m然這次實(shí)驗(yàn)未能夠完成這些功能,但這些仍是值得思考并后續(xù)實(shí)現(xiàn)的功能。通過(guò)本次實(shí)驗(yàn),我進(jìn)一步了解熟悉MFC和網(wǎng)絡(luò)編程,將課上理論知識(shí)能大概應(yīng)用于編程實(shí)踐,但對(duì)一些原理的理解不夠透徹,一些比較基礎(chǔ)的功能還未能實(shí)現(xiàn),還有較長(zhǎng)的一段路要走。 七 思考題或討論題1 本次實(shí)驗(yàn)所涉及的“實(shí)體”是什么?實(shí)體間通過(guò)什么方式建立協(xié)議?2. 服務(wù)和協(xié)議的區(qū)別與聯(lián)系?本次實(shí)驗(yàn)的協(xié)議過(guò)程(即客戶-服務(wù)器方式)是怎樣建立的?有哪些服務(wù)?3、本次實(shí)驗(yàn)的協(xié)議提供了什么服務(wù)?試想,用此協(xié)議還可以提供怎樣的服務(wù)?這種服務(wù)在自動(dòng)化學(xué)科領(lǐng)域的意義是什么?1、本次實(shí)驗(yàn)
13、設(shè)計(jì)的“實(shí)體”為服務(wù)器和客戶端,兩者之間通過(guò)創(chuàng)建套接字、服務(wù)器端偵 聽(tīng)、客戶端發(fā)送連接請(qǐng)求、服務(wù)器端同意連接等步驟建立協(xié)議,即以客戶-服務(wù)器方 式建立協(xié)議。2、協(xié)議就是規(guī)則的集合。在網(wǎng)絡(luò)中要做到有條不紊地交換數(shù)據(jù),就必須遵循一些事先約 定好的規(guī)則。這些規(guī)則明確規(guī)定了所交換的數(shù)據(jù)的格式以及相關(guān)的同步問(wèn)題。這些為進(jìn)行網(wǎng)絡(luò)中的數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或約定稱(chēng)為網(wǎng)絡(luò)協(xié)議(Network Protocol),它是控 制兩個(gè)(或多個(gè))對(duì)等實(shí)體進(jìn)行通信的規(guī)則的集合,也就是水平的。網(wǎng)絡(luò)協(xié)議也簡(jiǎn)稱(chēng)為協(xié)議。 協(xié)議由語(yǔ)法、語(yǔ)義和同步三部分組成。 (1)語(yǔ)法規(guī)定了傳輸數(shù)據(jù)的格式; (2)語(yǔ)義規(guī)定了所要完成的功能,即
14、需要發(fā)出何種控制信息、完成何種動(dòng)作以及做出 何總應(yīng)答; (3)同步規(guī)定了執(zhí)行各種操作的條件、時(shí)序關(guān)系等,即事件實(shí)現(xiàn)順序的詳細(xì)說(shuō)明。一個(gè)完整的協(xié)議通常應(yīng)具有線路管理(建立、釋放連接)、差錯(cuò)控制、數(shù)據(jù)轉(zhuǎn)換等功能。 服務(wù)是指下層為緊向鄰的上層提供的功能調(diào)用,也就是垂直的。對(duì)等實(shí)體在協(xié)議的控制下,使得本層能為上一層提供服務(wù),但要實(shí)現(xiàn)本層協(xié)議還需要使用下一層所提供的服務(wù)。 上層使用下層所提供的服務(wù)必須通過(guò)與下層交換一些命令,這些命令在 OSI 中稱(chēng)為服務(wù)原語(yǔ)。OSI 將原語(yǔ)換分為四類(lèi): 1)請(qǐng)求(Request):由服務(wù)用戶發(fā)往服務(wù)提供者,請(qǐng)求完成某項(xiàng)工作。 2)指示(Indication): 由服務(wù)器
15、提供者發(fā)往服務(wù)用戶,指示用戶做某件事。 3)相應(yīng)(Response):由服務(wù)用戶發(fā)往服務(wù)提供者,作為指示的響應(yīng)。 4)證實(shí)(Conformation):由服務(wù)提供者發(fā)往服務(wù)用戶,作為對(duì)請(qǐng)求的證實(shí)。 這四類(lèi)原語(yǔ)用于不同的功能,如建立連接、傳輸數(shù)據(jù)和斷開(kāi)連接等。有應(yīng)答服務(wù)包括 全部四類(lèi)原語(yǔ),而無(wú)應(yīng)答服務(wù)則只是請(qǐng)求和指示兩個(gè)原語(yǔ)。 協(xié)議和服務(wù)在概念上是不一樣的 。首先,本層協(xié)議的實(shí)現(xiàn)才能保證向上一層提供服務(wù)。本層的服務(wù)用戶只能看到服務(wù)而無(wú)法看見(jiàn)下面的協(xié)議,即下面的協(xié)議對(duì)上層的服務(wù)用 戶是透明的。其次,協(xié)議是“水平的”,即協(xié)議是控制對(duì)等實(shí)體之間通信的規(guī)則。但服務(wù)是 “垂直的”,即服務(wù)是由下層通過(guò)層間接
16、口向上層提供的。另外,并非在一層內(nèi)完成的全部 功能都稱(chēng)為服務(wù),只有那些能夠被高一層實(shí)體“看得見(jiàn)”的功能才稱(chēng)為服務(wù)。客戶-服務(wù)器方式通過(guò)創(chuàng)建套接字、服務(wù)器端偵聽(tīng)、客戶端發(fā)送連接請(qǐng)求、服務(wù)器端同意連接等步驟建立協(xié)議。服務(wù)器等待客戶端的請(qǐng)求,在客戶端提出連接請(qǐng)求后,同意并進(jìn)行連接,然后進(jìn)行數(shù)據(jù)通信,提供服務(wù)。本次實(shí)驗(yàn)中,主要提供了發(fā)送消息和接收消息等服務(wù)。3、本次實(shí)驗(yàn)的協(xié)議提供了信息傳遞服務(wù),包括使用套接字進(jìn)行發(fā)送和接收消息。此外, 用此協(xié)議還可以進(jìn)行文本傳輸,或在此基礎(chǔ)上優(yōu)化為其它文件的傳輸,也可調(diào)整為實(shí)時(shí)或 延時(shí)等。 TCP/IP 協(xié)議有以下特點(diǎn): (1)TCP/IP 協(xié)議不依賴于任何特定的計(jì)算
17、機(jī)硬件或操作系統(tǒng),提供開(kāi)放的協(xié)議標(biāo)準(zhǔn), 即使不考慮 Internet,TCP/IP 協(xié)議也獲得了廣泛的支持。所以 TCP/IP 協(xié)議成為一種聯(lián)合 各種硬件和軟件的實(shí)用系統(tǒng)。 (2)TCP/IP 協(xié)議并不依賴于特定的網(wǎng)絡(luò)傳輸硬件,所以 TCP/IP 協(xié)議能夠集成各種各樣的網(wǎng)絡(luò)。用戶能夠使用以太網(wǎng)(Ethernet)、令牌環(huán)網(wǎng)(Token Ring Network)、撥號(hào)線路 (Dial-up line)、 X.25 網(wǎng)以及所有的網(wǎng)絡(luò)傳輸硬件。 (3)統(tǒng)一的網(wǎng)絡(luò)地址分配方案,使得整個(gè) TCP/IP 設(shè)備在網(wǎng)中都具有惟一的地址 (4)標(biāo)準(zhǔn)化的高層協(xié)議,可以提供多種可靠的用戶服務(wù)。 因此,這種協(xié)議提供
18、的服務(wù)應(yīng)用將越來(lái)越廣泛,且可以和硬件與軟件相結(jié)合,對(duì)于硬件和軟件經(jīng)常兩相結(jié)合的自動(dòng)化領(lǐng)域就有了相對(duì)較大的作用。附錄相關(guān)代碼:void CTalkDlg:OnAccept()/對(duì)于服務(wù)器/接受連接請(qǐng)求m_sListenSocket.Accept(m_sConnectSocket);/激活消息輸入和相關(guān)控件GetDlgItem(IDC_EDIT_MSG)-EnableWindow(TRUE);GetDlgItem(IDOK)-EnableWindow(TRUE);GetDlgItem(IDC_STATIC_MSG)-EnableWindow(TRUE);GetDlgItem(IDC_BTN_CLOSE)-EnableWindow(TRUE);void CTalkDlg:OnClose() /關(guān)閉連接的套接字m_sConnectSocket.Close();/禁用消息輸入和發(fā)送的相關(guān)控件GetDlgItem(IDC_EDIT_MSG)-EnableWindow(FALSE);GetDlgItem(IDOK)-EnableWindow(FALSE);Ge
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源項(xiàng)目投資合同履行的環(huán)保擔(dān)保協(xié)議3篇
- 電氣維保知識(shí)培訓(xùn)課件
- 船舶安全知識(shí)培訓(xùn)課件
- “520”荔枝電商法治講堂2025年度電商合規(guī)指南3篇
- 《疾病與營(yíng)養(yǎng)的關(guān)系》課件
- 2024年防水工程竣工驗(yàn)收合同
- 《白銀投資》課件
- 浙江農(nóng)林大學(xué)《現(xiàn)代農(nóng)業(yè)建筑設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中南林業(yè)科技大學(xué)涉外學(xué)院《兒童畫(huà)創(chuàng)作理論與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度公益組織與企業(yè)聯(lián)合慈善捐贈(zèng)合作框架協(xié)議范本3篇
- 新GCP醫(yī)療器械臨床試驗(yàn)知識(shí)試題(附含答案)
- 2024年浙江首考高考選考生物試卷試題真題(含答案詳解)
- 春節(jié)期間安全告知書(shū)
- 天津市紅橋區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末地理試題
- 西門(mén)子數(shù)字化工廠-數(shù)字化車(chē)間-先進(jìn)制造技術(shù)
- 飯店新店后廚培訓(xùn)方案
- 青少年禮儀培訓(xùn)課件
- 2024醫(yī)院消防安全培訓(xùn)
- 景區(qū)銷(xiāo)售可行性報(bào)告
- 公路自然災(zāi)害的防治-路基水毀的類(lèi)型與防治對(duì)策
- 高二年級(jí)體育課教案高二年級(jí)體育課教案全集
評(píng)論
0/150
提交評(píng)論