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