外文翻譯--socket通信翻譯數(shù)據(jù)通信實驗中的套接字編程 中文版
《外文翻譯--socket通信翻譯數(shù)據(jù)通信實驗中的套接字編程 中文版》由會員分享,可在線閱讀,更多相關(guān)《外文翻譯--socket通信翻譯數(shù)據(jù)通信實驗中的套接字編程 中文版(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
北京工業(yè)大學(xué)畢業(yè)設(shè)計(譯文) 15 數(shù)據(jù)通信實驗中的套接字編程 ● 摘要 雖然許多數(shù)據(jù)通信的課程都沒有教授編程方面的內(nèi)容,但計算機專業(yè)課程的規(guī)劃應(yīng)該包括編程。許多有編程內(nèi)容的數(shù)據(jù)通信課程當處理詳細的網(wǎng)絡(luò)層工程時利用了 接字編程允許學(xué)生們處理同樣的事情和問題,但是從文章中它看起來更有用,而且更有趣。另外,如果套接字類使用 C++,希望得到的對套接字的操作差不多都可以呈現(xiàn)出來。 ● 序論 數(shù)據(jù)通信是大多數(shù)管理信息系統(tǒng) (及服務(wù)器 /客戶端 (C/S)程序標準的一部分。目前作為課程廣泛改善實行的證據(jù)是提供教材的變化。許多 教材,無論是針對 是 很少或沒有提供實驗活動。 程趨向強調(diào)數(shù)據(jù)通信和網(wǎng)絡(luò)的管理。最近的新聞列表顯示了對使用數(shù)據(jù)通信和通信所提供的種類和方式的調(diào)查。無論國內(nèi)或國外,合作方案都非常流行。 程會使用一些非常技術(shù)和寬泛的教材。很明顯,一個工程的規(guī)劃需要更多廣泛和詳細的課程去研究數(shù)據(jù)通信的物理和結(jié)構(gòu)方面。 實驗可能的類型同樣很廣泛?!叭蚝献髂P汀睆娖冉探o我們數(shù)據(jù)通信如何工作,以用于復(fù)雜的通信機制和提供一個解釋這些系統(tǒng)功能的基礎(chǔ)?;谔峁┑馁Y源,去考慮通過允許學(xué)生嘗試通信的不同的物理和邏輯類型 的設(shè)計選擇。 另一個極端是強調(diào)低水平的,數(shù)據(jù)通信物理理解的練習(xí) —— 幾乎是一個工程逼近。一個典型的例子是使用 連續(xù)的端口。除了編寫代碼去操作物理硬盤之外,更多復(fù)雜的概念將被研究。在作者過去使用過的資料中,利用一個 議和令牌環(huán)來實現(xiàn)文件傳送的分配。這個實驗步驟包括基于一個發(fā)展中的 據(jù)鏈路層的大規(guī)模工程。 這些步驟中沒有提供實際可操作的硬件經(jīng)驗。除了這張紙中的練習(xí),作者還安排了一個通過硬件和軟件的安裝將 聯(lián)網(wǎng)的工程。服務(wù)器需要額外的安裝和配置。當套接字模型被采用時,這樣一個 工程就可以繼續(xù)下去。這里的步驟呈現(xiàn)了為學(xué)生們提供了一個數(shù)據(jù)通信和網(wǎng)絡(luò)的廣闊視角。 ● 接字 簡單地講,套接字是一個機制,在相同或不同的機器上實現(xiàn)信息傳送的過程。如果這個過程在同樣的機器上,套接字可以用作管道。 接字允許運行在不同的機器之間的通信。這個系統(tǒng)與 i/o 擁有同樣的調(diào)用。套接字編程的一個典型的步驟是創(chuàng)建一個過程,打開服務(wù)器套接字端口和偵聽另一個嘗試連接的過程??蛻舳丝梢杂门c服務(wù)器端套接字同樣的端口號打開一個套接字,請求服務(wù)連接。如果服務(wù)器偵聽到這個請求,就建立了一個 連接。通信使用 )和 函數(shù)繼續(xù)。 北京工業(yè)大學(xué)畢業(yè)設(shè)計(譯文) 16 通信有許多標準協(xié)議的類型,比較普遍地兩種是 用戶數(shù)據(jù)報協(xié)議)和 傳輸控制協(xié)議)。兩種協(xié)議都是經(jīng)過一個套接字過程傳送信息包。 提供一個數(shù)據(jù)被接收或者大量信息包被順序接收的保證。 一個可靠的和有次序的流協(xié)議。程序員在 接字上輸入和輸出,作為一個來自終端或文件的字節(jié)流出現(xiàn)。如果 據(jù)在一個合理的 時間內(nèi)不能被成功傳送,將會顯示一個錯誤。由于在 涉及比較少的開頭部分,如果有次序收到數(shù)據(jù)非常重要,程序也就必須更加復(fù)雜。 兩個過程之間的套接字連接是兩臺主機 /端口對之間的連接,端口號指示了提供的特殊服務(wù)。許多經(jīng) 接字的服務(wù)通常提供一個可識別的首字母縮寫詞:像 簡單郵件傳輸協(xié)議 , 用于電子郵件的傳輸), 絡(luò)新聞傳輸協(xié)議 (和 文件傳送 [輸 ]協(xié)議)。 于遠程聯(lián)接服務(wù)的標準協(xié)議或者實現(xiàn)此協(xié)議的軟件)是另外的套接字服務(wù)。 供了一種機制,憑借著提供服務(wù)的名字能夠譯出端口號。 ● 套接字的優(yōu)勢 數(shù)據(jù)通信實驗中利用套接字編程的一個明顯的缺點是沒有像 連續(xù)端口那樣多的直接硬件交互。然而,多數(shù)大學(xué)生不會處在這樣詳細的知識會很重要的情形中。即使有連續(xù)的端口,這個概念對許多學(xué)生來說仍然很抽象?;谔捉幼植襟E地優(yōu)勢是它將套接字的抽 象變得很具體。 在過去,基于 實驗的一個優(yōu)勢是費用的低廉。然而,至少有兩個因素來平衡這種優(yōu)勢。一是現(xiàn)在 作站普遍使用, 以通過安裝 免費版本來轉(zhuǎn)換成工作站。另一個因素是,即使 相對便宜,實際上會出現(xiàn)老化,不穩(wěn)定,機器被分配到一個像數(shù)據(jù)通信實驗這樣專注的工程。我們的經(jīng)驗是我們可以負擔得起使用的機器都非常不穩(wěn)定。 雖然套接字編程的“高起點”的本性已經(jīng)作為一個優(yōu)勢強調(diào)了,但使得分配像我們所希望的那樣詳細同樣是可能的。沒有任何軟件支持的套接字編程需要大量“低起點”的理解和操作。一個簡 單是修改將是基于 而不是 的分配。許多附加的程序(經(jīng)環(huán)冗余碼校驗)的錯誤校驗、順序數(shù)字、接收的確認、接收錯誤的否定確認)都是必要的。無論是 是 ,適當?shù)脑O(shè)計握手機制對文件傳輸這樣的程序來說都是必要的。 通過連續(xù)的端口分配,課程時間就可以投入到作為控制、狀態(tài)、數(shù)據(jù)記錄和類似連續(xù)轉(zhuǎn)換的低起點概念中。通過一個套接字步驟,就可以討論像信息報頭、網(wǎng)絡(luò)和機器字節(jié)順序這樣類似的概念了。如果愿意,連續(xù)端口通信的許多適當?shù)闹黝}都可以成為套接字程序和給出的許多相同分配的必須。即使分配了高起點 的應(yīng)用,學(xué)生們?nèi)匀槐仨毨斫饬骱途彌_區(qū)之間的不同。 北京工業(yè)大學(xué)畢業(yè)設(shè)計(譯文) 17 ● C++套接字類的優(yōu)勢 許多參考書提供了套接字通信的詳細情形,這些參考書提供了任務(wù)的例子和方法。所有建立通信、把通信轉(zhuǎn)換成緩沖區(qū)流和錯誤校驗的詳細情況都可以由 統(tǒng)調(diào)用完成。許多低起點的理解對于編寫穩(wěn)定的應(yīng)用程序來說是必須的。 一個設(shè)計得很好的 C++類可以被構(gòu)建用于使用簡單的語義學(xué)提供套接字的完全功能。編寫客戶到建立的服務(wù)器、事件驅(qū)動服務(wù)器和輪流檢測服務(wù)器是可能的。 作者提供了一組 C++類,這些程序都是在 編寫的。他們是由 供的。這些類對給出的任務(wù)表現(xiàn)出了非常好的功能。它的接口與輸入輸出流和提供安全類型的輸入輸出一樣。在 中有套接字流類,就像其中有管道流類一樣。套接字緩沖區(qū)類來源于流緩沖區(qū)類。這樣,學(xué)生們必須學(xué)習(xí)關(guān)于沒有套接字輸入與輸出的流和緩沖區(qū)。 套接字緩沖區(qū)類包括錯誤功能、準備好檢測、直接操作、上溢出、下溢出和超時功能。套接字選項如消息路由、局部地址的再使用、廣播等等都要設(shè)置。這樣,套接字的詳細情形就可以如 希望的那樣了。 在我們特殊的課程中,使用這些 C++類一方面的益處是學(xué)生們必須在一年級 /二年級的水平課程中使用到 C++語言,幫助他們保持學(xué)到的技能。 ● 任務(wù) 在選擇一個為期三學(xué)期的課程任務(wù)時,我們渴望實現(xiàn)很多目標。我們被希望設(shè)計出一系列的任務(wù)來讓學(xué)生編寫一個客戶端的應(yīng)用、一個服務(wù)器的應(yīng)用、一個對等網(wǎng)絡(luò)應(yīng)用,也提供一些像電子郵件和文件傳輸這樣一些標準應(yīng)用的經(jīng)驗。另外,任務(wù)應(yīng)該由簡單到復(fù)雜,循序漸進。我們在下面列出了這些任務(wù)要點。 這些任務(wù)得到了學(xué)生們的良好反響。他們感覺到了實踐的樂趣,同時,也有了一個好的 計劃。一些以前沒有接觸過它們的學(xué)生經(jīng)過努力也都有非常好的結(jié)果。這五項明確的任務(wù)是: ▲ 任務(wù)一:套接字客戶端到電子郵件服務(wù)器 在本地或遠程的機器上編寫一個客戶端程序去連接電子郵件服務(wù)器,然后發(fā)送一封電子郵件到一個用戶名( 在電子郵件地址中 @符號之前的名稱)。用戶不必要是本地或遠程機器上的。例如,這個程序可能叫做 括兩項任務(wù):主機名和用戶名。 我們要求有一個簡單的命令行接口,但是學(xué)生們可以自由地發(fā)揮,做出更多精致的電子郵件類型接口來。 簡單郵件傳輸協(xié)議 , 用于電子郵件的傳輸)的命令是一定會用到的。列舉一些如下: 北京工業(yè)大學(xué)畢業(yè)設(shè)計(譯文) 18 確認連接機器 —— 本地名稱不需要 —— 一些服務(wù)器不需要一些要包括。 發(fā)送命令列表 可以是你愿意的任何東西 —— 不經(jīng)過合法性的檢驗 O: 郵件的容器 —— 不需要是本地名稱 允許信息進入 —— 以“ .”作為消息的終止字符 斷開連接 同其他的任務(wù)一樣,這個任務(wù)也會帶給學(xué)生一些不合適的活動。下面是提給學(xué)生們的一些警告: 顯然你可能在程序中做一些不禮貌的事情。例如,你可能從 里發(fā)送一串管理員的消息。這需要一些工作量,但這些消息的發(fā)送人將會被記錄。請不要熱衷于這樣幼稚的行為。 一些人可能會爭辯說這樣的任務(wù)太“危險” ,但是學(xué)生們可以學(xué)到如何操作套接字,能夠解決如何自己發(fā)送郵件的問題。我們的方法是承認這樣一個 問題的存在并提出警告。 ▲ 任務(wù)二:簡單的網(wǎng)絡(luò)信息服務(wù)器 編寫一個有如下特征的網(wǎng)絡(luò)服務(wù)器程序: 1. 從輸入套接字接受命令 2. 解釋命令并集合信息 3. 發(fā)送輸出命令到輸出套接字 你不需要為這個任務(wù)編寫一個客戶端程序,因為標準的 用于遠程聯(lián)接服務(wù)的標準協(xié)議或者實現(xiàn)此協(xié)議的軟件 ,遠程登錄)客戶端將可以提供這樣的功能。 個信息的選擇提供系統(tǒng)命令,像域名等等。系統(tǒng)的功能可以從一個 C++程序內(nèi)部執(zhí)行。困難的部分是將命令 的輸出并發(fā)送輸出到套接字與客戶端連接起來。命令的輸出應(yīng)該與套接字直接連接。建議有兩種途徑:用管道流類和用傳統(tǒng)的通過用戶構(gòu)造管道連接的 C 來執(zhí)行系統(tǒng)功能。 ▲ 任務(wù)三:對等網(wǎng)絡(luò)套接字通信 編寫一個作為兩個相同程序執(zhí)行的“聊天”程序。它應(yīng)該允許用戶自定義連接過程的輸出所出現(xiàn)的信息。這兩個過程經(jīng)過一個套接字連接。程序?qū)⒃试S用戶連接一個確定的過程并監(jiān)聽另一個試圖連接的處理。 兩臺機器上運行相同的程序,任務(wù)必須包括這些要點:監(jiān)聽的超時、通過服務(wù)器程序創(chuàng)建子進程、關(guān)閉套接字并終止子進程。一個有限狀態(tài)過渡模 型應(yīng)該呈現(xiàn)出來幫助程序的設(shè)計。 ▲ 任務(wù)四:文件傳輸 —— 服務(wù)器和客戶端 北京工業(yè)大學(xué)畢業(yè)設(shè)計(譯文) 19 通過 P 網(wǎng)絡(luò)套接字連接編寫一個文件傳輸程序。 第一個程序應(yīng)該與一個 務(wù)器功能相同。它應(yīng)該在幕后運行并等待一個指定端口的連接。第二個程序應(yīng)該與一個 戶端功能相同。因此,需要一個用戶接口。命令將通過響應(yīng)進入并發(fā)送到服務(wù)器。文件應(yīng)該可以進行雙向傳輸。 客戶端程序應(yīng)該通過響應(yīng)行為接受下列命令: 服務(wù)器上文件列表 從客戶端到服務(wù)器傳送文件 從服務(wù)器到客戶端傳送文件 斷開與服務(wù)器的連接 : 在客戶端執(zhí)行 這對服務(wù)器 /客戶端的性能比 簡單許多。 單文件傳輸協(xié)議)與它類似。舉例來說, 用 2 個 接,其中一個類似 接用于控制,另一個作數(shù)據(jù)傳輸。 一個簡單的 接并提供用戶訪問控制,目錄列表和變更,文件重命名和文件刪除。對于這些命令,這里只有目錄列表是需要的。 樣支持 個任務(wù)需要一個握手協(xié)議。 ▲ 任務(wù)五:三個選擇 任務(wù)五 A:使用 件傳輸 建立 接字而不是 接字執(zhí)行任務(wù) 4 的文件傳輸程序。這個程序需要: ⊙ 集合數(shù)據(jù)包 ⊙ 提供 誤校驗 ⊙ 提供包的先后順序 數(shù)據(jù)包可能不是按照順序到達,可能重復(fù)或丟失,需要重新請求或重新排列。每個數(shù)據(jù)包應(yīng)該被確認(肯定地或否定地)。我們將采用一個協(xié)議來描述數(shù)據(jù)包的格式和錯誤信息等等。為了測驗使用的協(xié)議,允許用戶指定傳輸中將會出錯的部分。 任務(wù)五 B:雙向文件傳輸 改為打開 2 個套接字執(zhí)行任 務(wù) 4 的文件傳輸程序,一個用于控制信息一個用于數(shù)據(jù)傳輸。另外,允許兩個程序同時來回地發(fā)送文件,通過控制信道取消傳送過程。使用多個子進程將是有益的。(一個有限狀態(tài)機器將會是一個好方法)。 著相似的工作方式。它有兩個套接字連接,但是基于不同的原因,因為在這里它執(zhí)行的是一個真正的服務(wù)器 —— 客戶端協(xié)議,而不是對等網(wǎng)絡(luò)協(xié)議。 北京工業(yè)大學(xué)畢業(yè)設(shè)計(譯文) 20 ▲ 任務(wù)五 C:多用戶聊天程序 任務(wù)三涉及了對等網(wǎng)絡(luò)聊天程序。這個任務(wù)需要多路技術(shù)創(chuàng)造聊天服務(wù)器的程序,它能夠把握多重的套接字連接。沒有必要編寫客戶端程序因為可以使用 服 務(wù)器可以從任何套接字接受輸入行并把它們輸出到剩余的套接字連接。當一個用戶連接到聊天服務(wù)器,服務(wù)器應(yīng)該及時提供一個用戶名。這個名字應(yīng)該被廣播到其余的用戶。在用戶離開時同樣要廣播一條消息。當一個用戶的消息被發(fā)送到其它連接的用戶時,應(yīng)提供用戶名以供辨認。 ● 結(jié)論 重新設(shè)計數(shù)據(jù)通信課程實驗內(nèi)容的目的是提供這樣的一些任務(wù): ⊙ 給學(xué)生們更有意義和更實際的內(nèi)容 ⊙ 更另人愉快的,因此也能更好完成的內(nèi)容 ⊙ 更現(xiàn)代,但仍然強調(diào)對所發(fā)生內(nèi)容的理解而不僅僅是利用數(shù)據(jù)通信 ⊙ 循序漸進,環(huán)環(huán)相扣 ⊙ 基于更加可靠的硬件,丟 棄了以前使用的 一旦這個套接字范例被選用,目的在于創(chuàng)造一些任務(wù)需要學(xué)生編寫這樣的代碼: ⊙ 利用 C++類 ⊙ 提供一個簡單的客戶端有權(quán)使用定義明確的服務(wù)器 ⊙ 提供簡單的服務(wù)器功能 ⊙ 提供對等網(wǎng)絡(luò)通信 ⊙ 提供多路技術(shù)服務(wù)器功能 ⊙ 通過一種方式實現(xiàn)一個類似于眾所周知網(wǎng)絡(luò)服務(wù)的功能 ⊙ 需要學(xué)生們關(guān)注可靠通信 ⊙ 使用一些 形態(tài)并進行進程間通信編程 這些任務(wù)在學(xué)生們中得到了非常好的反響。好學(xué)生發(fā)現(xiàn)通過設(shè)計好的用戶接口或提供增加功能性來增強計劃的方法?;A(chǔ)不是很好的學(xué)生能夠完成任務(wù)并發(fā)現(xiàn) 它們同樣有意義和有趣。作者在一所小的自由技術(shù)大學(xué)教授電腦科學(xué)的二十年中,這種實驗任務(wù)的變化就像其它任何一門課程的變化一樣地被接受了。- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
5 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 外文 翻譯 socket 通信 數(shù)據(jù)通信 實驗 中的 套接 編程 中文版
鏈接地址:http://www.3dchina-expo.com/p-31490.html