




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、題目:模擬總線型以太網數據幀發送過程姓名: 學號: 班號: 時間:2016/10/03計算機學院時間:目 錄摘 要1 目的12 要求13相關知識14實現原理及流程圖錯誤!未定義書簽。5程序代碼46運行結果與分析57參考文獻15題目:模擬總線型以太網數據幀發送過程1、 目的 模擬總線型以太網數據幀發送過程,熟悉Ethernet的基本工作原理,特別是CSMA/CD介質訪問控制方法。2、 要求在一臺計算機上模擬總線-臺網發送過程,總線上連接的計算機個數兩個,支持CSMA/CA協議(二進制指數退避算法)已經實現了a計算機模擬發送過程,請完成b計算機模擬發送過程。3、 相關知識Ethernet的核心技術
2、是隨機爭用型介質訪問方法,即帶有沖突檢測的載波監聽多路訪問(CSMA/CD)方法。1. Ethernet的幀的發送流程1) 載波監聽過程。Ethernet中每個結點利用總線發送數據,總線是每個結點共享的公共傳輸介質,所以結點在發送一個幀前,必須偵聽總線是否空閑。由于Ethernet的數據采用曼徹斯特編碼方式,所以可以通過判斷總線電平是否跳變來確定總線是否空閑。若總線空閑,就可啟動發送,否則繼續偵聽。2) 沖突檢測。在數據發送過程中,可能會產生沖突(沖突是指總線上同時出現兩個或兩個以上的發送信號,它們疊加后的信號與波形與任何發送結點輸出的信號波形不相同。因為可能有多個主機都在偵聽總線,當他們偵聽
3、到總線空閑時,就會往總線上發送數據)。所以在發送數據的過程中,也應該進行沖突檢測,只要發現沖突就應該停止發送數據。3) 隨機延遲后重發。在檢測到沖突,停止發送后,結點進行隨機延遲后重發。若重發16次后還沒成功,則宣告發送失敗,取消該幀的發送。延遲計算的方法一般采用截止二進制指數后退算法.該算法可表示為:r=2k*R*a.其中r為結點重新發送需要后退的延遲時間,a為沖突窗口值(沖突窗口為總線最大長度和電磁波在介質中的傳播速度比值的二倍),R為隨機數,k的取值為k=min(n,10),n為該幀已被發送的次數。2. Ethernet幀接收流程幀接收流程大致可以分為以下三個步驟:1) 檢查是否發生沖突
4、,若發生沖突,則丟棄該幀;若沒有沖突,進入下一步2) 檢查該幀的目的地址是否可以接收該幀,若可以接收,則進入下一步。3) 檢查CRC校驗和LLC數據長度。若都正確,接收該幀,否則丟棄。4、 實現原理及流程圖實現原理重難點:1)模擬沖突的過程,在這個程序中不要使用任何線程同步機制 2)若程序不能模擬出沖突,可以在某些地方加入延時。核心代碼:UINT aThread(LPVOID pParam) /初始化成功次數,沖突計數器,沖突窗口與隨機數 int i=0; int CollisionCounter=16; double CollisionWindow=0.005; int randNum=ra
5、nd()%3;Loop: /總線空閑 if(Bus=0) /模擬發送Ethernet幀 Bus=Bus|ID1; Sleep(12); /發送過程無沖突 if(Bus=ID1) printf("%d Send Successn",ID1); Bus=0; CollisionCounter=16; Sleep(rand()%10); i+; printf("主機a發送成功次數= %dn",i); /發送次數不夠3次,開始下一次發送 if(i<5) goto Loop; /發送過程有沖突 else printf("%d Send Collis
6、ionn",ID1); Bus=0; CollisionCounter-; if(CollisionCounter>0) /隨機延遲重發,延遲算法用截止二進制指數后退算法 Sleep(randNum*(int)pow(2,(CollisionCounter>10)?10:CollisionCounter)*CollisionWindow); goto Loop; else printf("%ld Send Failuren",ID1); /總線忙 else goto Loop; return 0; 流程圖5、程序代碼(以附件形式,編程環境:visual
7、 c+6.0)見附件SendFrame文件夾 5、 運行結果與分析運行結果截圖:在visual studio中建立支持MFC的win32 console application時,會自動生成與項目同名的cpp文件,因為對MFC編程不太了解,所以一開始我是在項目中再新建一個cpp文件添加上述代碼,導致的結果是編譯能夠通過,但是運行的時候只是黑框,沒有任何結果。 在vc+6.0中重新嘗試,編譯能夠通過,但是鏈接的時候提示項目中定義了兩個_main函數,嘗試將代碼復制進自動生成的與項目同名的cpp文件中,運行通過。 檢索到的關于MFC編程的概述如下: MFC (Microsoft Foundatio
8、n Class Library)中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立Windows下的應用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應用程序的輪廓,并提供了用戶接口的標準實現方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓。Microsoft Visual C+提供了相應的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設計用戶接口;ClassWizard用來協助添加代碼到框架文件;最后,編譯,則通過類庫實現了應用程序特定的邏輯。如前所述,MFC實現了對應用程序概念的封裝,把類、類的繼承、動態約束、類的關系和相互作用等封裝起來。這樣封裝的結果對程序員來說,是一套開發模板(或者說模式)。MFC提供了一個Windows應用程序開發模式,對程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,預定義或實現了許多事件和消息處理,等等。框架或者由其本身處理事件,不依賴程序員的代碼;或者調用程序員的代碼來處理應用程序特定的事件。MFC是C+類庫,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤基高端新材料項目建議書(參考)
- 歷史建筑修繕工程規劃設計方案(參考模板)
- 老字號品牌振興計劃可行性研究報告(模板)
- 淮北師范大學《煤的潔凈燃燒與高效利用技術》2023-2024學年第二學期期末試卷
- 合肥幼兒師范高等專科學校《編程開發》2023-2024學年第二學期期末試卷
- 的車輛安全檢查工作制度
- 河北師范大學《量子力學ⅡA》2023-2024學年第二學期期末試卷
- 長沙學院《舞臺演播室形體》2023-2024學年第二學期期末試卷
- 西北工業大學《飛行器制導與控制》2023-2024學年第二學期期末試卷
- 湖州職業技術學院《金屬材料制備實驗》2023-2024學年第二學期期末試卷
- 護理管理的發展史
- 水泥路面損壞調查表(公式)
- 【MOOC】天文探秘-南京大學 中國大學慕課MOOC答案
- 市政施工人員安全教育培訓
- 《飲料對人體的危害》課件
- 人教版英語八年級下冊 Unit 6 知識點詳解及練習
- 2023年貴州黔東南州州直機關遴選公務員筆試真題
- 江蘇省中等職業學校學業水平考試思想政治卷及答案
- 過賬協議合同范本
- 2024年個人之間清賬協議書模板范本
- 2024年福建高考化學試卷(含答案解析)
評論
0/150
提交評論