![通信工程畢業(yè)設(shè)計(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9cef6471-6b65-47b3-b618-08eacda13225/9cef6471-6b65-47b3-b618-08eacda132251.gif)
![通信工程畢業(yè)設(shè)計(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9cef6471-6b65-47b3-b618-08eacda13225/9cef6471-6b65-47b3-b618-08eacda132252.gif)
![通信工程畢業(yè)設(shè)計(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9cef6471-6b65-47b3-b618-08eacda13225/9cef6471-6b65-47b3-b618-08eacda132253.gif)
![通信工程畢業(yè)設(shè)計(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9cef6471-6b65-47b3-b618-08eacda13225/9cef6471-6b65-47b3-b618-08eacda132254.gif)
![通信工程畢業(yè)設(shè)計(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9cef6471-6b65-47b3-b618-08eacda13225/9cef6471-6b65-47b3-b618-08eacda132255.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、本科畢業(yè)設(shè)計本科畢業(yè)設(shè)計(論文論文) 題目:基于局域網(wǎng)的文件傳輸系統(tǒng)的題目:基于局域網(wǎng)的文件傳輸系統(tǒng)的 設(shè)計與實現(xiàn)設(shè)計與實現(xiàn) 院院 (系):(系): 電子信息工程學院電子信息工程學院 專專 業(yè):業(yè): 通信工程通信工程 班班 級:級: 學學 生:生: 學學 號:號: 指導(dǎo)教師:指導(dǎo)教師: 2012 年 6 月 基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn) 摘摘 要要 在這個信息化時代,計算機網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展影響了幾乎包括政治、文 化、生活、經(jīng)濟在內(nèi)的每一個角落,推動了人類社會向信息化社會的逐步轉(zhuǎn)變; 同時我們也應(yīng)該清醒地認識到文件傳輸?shù)膯栴}是計算機網(wǎng)絡(luò)發(fā)展過程中的一
2、個 不容忽視的問題。在如今擁塞的網(wǎng)絡(luò)上,各種數(shù)據(jù)在爭奪著網(wǎng)絡(luò)資源,如何使 傳輸?shù)奈募涌煽康牡竭_目的地,同時如何友好的解決文件分類分組高效傳 輸?shù)葐栴}都是需要有待提高和完善的地方。很多情況下,人們的日常工作需要 借助文件傳輸來完成。但大多數(shù)文件傳輸功能都需要借助移動磁盤等硬件設(shè)備 或 internet 上的服務(wù)器才能實現(xiàn)。這就給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成 了許多問題,如浪費資金、浪費網(wǎng)絡(luò)資源、病毒入侵、降低了工作效率等。為 了方便局域網(wǎng)內(nèi)主機的資源共享,需要開發(fā)一個基于局域網(wǎng)的文件傳輸工具, 在內(nèi)部網(wǎng)絡(luò)中實現(xiàn)文件交換。 本文件傳輸系統(tǒng)的設(shè)計選用 vc+6.0 為開發(fā)工具,以 c/s 模
3、式通過建立 socket 連接后實現(xiàn)局域網(wǎng)快速,準確,安全的點對點文件傳輸功能。本系統(tǒng)能 夠促進局域網(wǎng)內(nèi)用戶之間的文件資源共享,滿足主機之間信息交流,確保文件 傳輸安全性,有效地提高工作效率。 關(guān)鍵字:套接字;網(wǎng)絡(luò)編程;關(guān)鍵字:套接字;網(wǎng)絡(luò)編程;c/s 模式;模式;tcp/ip design and implementation of file transfer system based on local area network abstract in this information era, the rapid development of computer network techno
4、logy has affected every corner almost, including politics, culture, life, economic, and promote the gradual transformation of human society to information society; we should also clearly recognize that the file transfer problem is a problem not to be ignored in the development of computer networks.
5、in todays congested network, various data competing for network resources, how to make transmission more reliable, and how to resolve the efficient problem is need to be improved and perfected. in many cases, peoples daily work is required to use file transfer to complete. but most of the file trans
6、fer capabilities require the removable disks and other hardware devices or servers on the internet. this caused many problems for those large-scale internal network users, such as a waste of money, a waste of network resources, virus attacks, reduced work efficiency. in order to facilitate the shari
7、ng of resources of the host in the lan, we need to develop a lan-based file transfer tool for document exchanged in the internal network. the file transfer system design uses vc+6.0 as development tools. by creating a c/s socket connection to realize fast, accurate, secure peer-to-peer file transfer
8、 capabilities. the system can promote the sharing of files between the lan user to meet the exchange of information between the host and ensure the file transfer security, and effectively improve work efficiency. key words: socket;network programming;c/s mode;tcp/ip 目目 錄錄 摘摘 要要.i abstract.ii 1 緒論緒論.
9、1 1.1 前言.1 1.2 國內(nèi)外研究現(xiàn)狀.1 1.3 課題研究的意義.1 1.4 本文主要研究內(nèi)容.2 2 系統(tǒng)需求分析系統(tǒng)需求分析.3 2.1 現(xiàn)行業(yè)務(wù)系統(tǒng)描述.3 2.2 現(xiàn)行系統(tǒng)主要存在的問題分析.3 2.3 提出解決方案.3 3 tcp/ip 協(xié)議協(xié)議.5 3.1 開放式系統(tǒng)互連參考模型.5 3.2 tcp/ip 技術(shù) .5 3.2.1 tcp/ip 體系結(jié)構(gòu).6 3.2.2 ip 協(xié)議.7 3.2.3 tcp 協(xié)議 tcp/ip 特點.7 3.2.4 tcp/ip 傳送文件機制.8 4 socket 網(wǎng)絡(luò)程序設(shè)計技術(shù)網(wǎng)絡(luò)程序設(shè)計技術(shù).10 4.1 socket編程.10 4.1.
10、1 winsock 簡介.10 4.1.2 winsock 通信機制.11 4.1.3 winsock 編程模型.13 4.2 主要函數(shù)介紹.15 4.3 c/s 構(gòu)架 .20 4.3.1 c/s 構(gòu)架軟件的優(yōu)勢與劣勢.20 5 軟件開發(fā)軟件開發(fā).22 5.1 程序功能分析.22 5.2 系統(tǒng)總體架構(gòu).22 5.3 設(shè)計流程圖.22 5.4 系統(tǒng)功能模塊設(shè)計.25 5.4.1 軟件設(shè)計.25 5.4.2 服務(wù)器模塊.25 5.4.3 客戶端模塊.28 6 軟件實現(xiàn)與測試軟件實現(xiàn)與測試.30 7 總結(jié)總結(jié).34 致致 謝謝.35 參考文獻參考文獻.36 畢業(yè)設(shè)計(論文)知識產(chǎn)權(quán)聲明畢業(yè)設(shè)計(論文
11、)知識產(chǎn)權(quán)聲明.37 畢業(yè)設(shè)計(論文)獨創(chuàng)性聲明畢業(yè)設(shè)計(論文)獨創(chuàng)性聲明.38 1 緒論緒論 1.1 前言前言 當今世界科學技術(shù)飛速發(fā)展,尤其以計算機通信網(wǎng)絡(luò)為代表的互聯(lián)網(wǎng)技術(shù) 更是日新月異,令人眼花燎亂,目不睱接。在計算機與網(wǎng)絡(luò)迅速發(fā)展的今天, 借助于網(wǎng)絡(luò)進行信息資源交流給人們帶來了極大的方便。隨著互聯(lián)網(wǎng)技術(shù)的迅 猛發(fā)展,計算機通信給人類文明帶來了翻天覆地的變化。很多情況下,人們的 日常工作需要借助文件傳輸來完成。但大多數(shù)文件傳輸功能都需要借助移動磁 盤等硬件設(shè)備或 internet 上的服務(wù)器才能實現(xiàn)。這就給那些具有大規(guī)模內(nèi)部網(wǎng) 絡(luò)的用戶造成了許多問題,如浪費資金、浪費網(wǎng)絡(luò)資源、病毒入侵
12、、降低了工 作效率等。為了方便局域網(wǎng)內(nèi)主機的資源共享,需要開發(fā)一個基于局域網(wǎng)的文 件傳輸工具,在內(nèi)部網(wǎng)絡(luò)中實現(xiàn)文件交換。 1.2 國內(nèi)外研究現(xiàn)狀國內(nèi)外研究現(xiàn)狀 目前,國內(nèi)外企業(yè)對局域網(wǎng)的文件傳輸系統(tǒng)認識和使用情況并不好,各個 企業(yè)單位在局域網(wǎng)內(nèi)實現(xiàn)文件傳輸,資源共享還有很大的缺陷。技術(shù)無論是從 理論上或?qū)嵺`上都還不夠完善。文件傳輸系統(tǒng)由于比較復(fù)雜,可變因素較多, 安全性低,因此發(fā)展還不成熟。 但是隨著科學技術(shù)的發(fā)展,各種以局域網(wǎng)為單位的文件傳輸系統(tǒng)已經(jīng)進入 穩(wěn)健發(fā)展期,比如說市面上比較普遍使用的 qq、uc、飛鴿傳書等以內(nèi)部網(wǎng)絡(luò) 為中心的資源共享系統(tǒng)也即將進入高速發(fā)展期。在國內(nèi),隨著企業(yè)資源管
13、理的 規(guī)范化和規(guī)模的不斷擴大,企業(yè)的計算機資源管理將不僅僅停留在依靠硬件或 者 internet 網(wǎng)絡(luò)獲取,而且將會向著安全的內(nèi)部網(wǎng)絡(luò)化資源管理方式邁進。 1.3 課題研究的意義課題研究的意義 隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展與用戶需求日益多樣化,現(xiàn)代局域網(wǎng)絡(luò)正處在變 革與發(fā)展之中,本課題的主要目的之一是為了更清晰地培養(yǎng)學生掌握科學研究 方法的能力和使學生迅速體會文件傳輸系統(tǒng)的研發(fā)過程。基于局域網(wǎng)的文件傳 輸系統(tǒng)能夠讓家庭網(wǎng)絡(luò)以及各個企業(yè)等局域網(wǎng)對內(nèi)部資料有一個快捷,準確, 安全的共享。特別是對如今較大系統(tǒng)研發(fā)的模塊分工合作得到了絕對保密性, 從而使各項工作有計劃、更科學的進行及順利完成,使企業(yè)的辦事效
14、率得到顯 著提高。文件傳輸系統(tǒng)主要功能是自動獲取局域網(wǎng)內(nèi)用戶的主機名,ip 地址以 及工作組名字,最終以 c/s 模式通過 tcp/ip 協(xié)議實現(xiàn)點到點文件傳輸功能。本 系統(tǒng)既鍛煉了我們的實際動手能力,使我們將大學四年所學的理論知識與實際 開發(fā)相結(jié)合,又引 導(dǎo)我們進行了一次模擬實際產(chǎn)品的開發(fā),對于我們以后工作能力的培養(yǎng)具有重 要的意義。 1.4 本文主要研究內(nèi)容本文主要研究內(nèi)容 計算機文件屬于文件的一種,與普通文件載體不同,計算機文件是以計算 機硬盤為載體存儲在計算機上的信息集合。文件可以是文本文檔、圖片、程序 等等。文件通常具有三個字母的文件擴展名,用于指示文件類型(例如,圖片 文件常常以
15、jpeg 格式保存并且文件擴展名為 .jpg) 。文件傳輸需要經(jīng)過兩個 步驟,一是網(wǎng)絡(luò)的鏈接;二是文件的傳輸。本文提出的方案主要是在滿足局域 網(wǎng)內(nèi)鏈路狀態(tài)良好,ip 地址已知的條件下的文件傳輸。 2 系統(tǒng)需求分析系統(tǒng)需求分析 2.1 現(xiàn)行業(yè)務(wù)系統(tǒng)描述現(xiàn)行業(yè)務(wù)系統(tǒng)描述 目前各種文件資源交流的主要方式可以分為三種:(1)通過局域網(wǎng)內(nèi)主機 之間以文件共享后再經(jīng)過復(fù)制,粘貼方式實現(xiàn)。 (2)依靠可移動磁盤的兩次信 息轉(zhuǎn)移實現(xiàn)。 (3)通過 internet 郵件方式實現(xiàn)。此三種方法并非不可行,但它 們都需要花費較長的時間以及安全性也得不到保證,工作效率將在很大程度上 受到限制。 如果通過局域網(wǎng)內(nèi)主機之
16、間復(fù)制粘貼來實現(xiàn)文件資源共享,將浪費大量的 網(wǎng)絡(luò)帶寬,極大程度上影響了網(wǎng)內(nèi)用戶的工作效率,甚至導(dǎo)致用戶不能正常工 作;如果依靠移動磁盤實現(xiàn)文件的共享,將花費大量的金錢,而文件較大移動 磁盤容量不足的情況下會令人極為頭疼,何況移動磁盤是病毒傳播的重要途徑; 如果通過 internet 郵件方式實現(xiàn),用戶需要接入 internet 服務(wù)器,這種方式對遠 程服務(wù)器有非常大的依賴性,即使 1kb 的文件都要經(jīng)歷極度繁瑣的路徑,不能 徹底實現(xiàn)點對點的即時交流,文件較大的情況下就不言而喻了。最重要的是, 在如今病毒黑客橫行的網(wǎng)絡(luò)世界中,信息的安全性也得不到保證。 綜上所述,依靠 internet 網(wǎng)絡(luò)等方
17、式實現(xiàn)文件資源交互的準確性,快速性 及安全性遠達不到理想的要求。 2.2 現(xiàn)行系統(tǒng)主要存在的問題分析現(xiàn)行系統(tǒng)主要存在的問題分析 針對企業(yè)來說,提高工作效率是企業(yè)的一個重心;降低成本是企業(yè)贏取最 大利益的重要方式;保證信息安全卻是可能影響企業(yè)生死存亡的關(guān)鍵。企業(yè)需 要對各種因素有足夠深刻的認識才可能實現(xiàn)最終目標-盈利。而傳統(tǒng)的文件資 源交互方式卻存在很多的問題,大致可以分為:一、不能有效地降低文件交互 成本;二、文件交換過程過于繁瑣;三、內(nèi)部機密資料得不到安全保證;四、 文件交互的準確性得不到根本保證。 2.3 提出解決方案提出解決方案 解決當前問題的方案主要是指在允許的成本、性能要求下,分析系
18、統(tǒng)實施 的可行性,提出功能實現(xiàn)的依據(jù),包括其簡單性,安全性以及經(jīng)濟可行性。根 據(jù)企業(yè)簡單快速,安全的資源共享等要求,提出以下四種解決方案: 1)操作簡單性方案:開發(fā)的系統(tǒng)需要有以下特點:windows 友好的用戶界 面和系統(tǒng)快速的應(yīng)用方法,簡單易操作,不需對使用人員進行培訓,可以使用 戶很好的掌握。對傳輸文件過程中的文件的載入設(shè)置都是非常簡單可行,比如: 如 果用戶忘記選擇文件接收者的時候系統(tǒng)會自動提示“請選擇接收用戶”要求用 戶選擇主機而不導(dǎo)致錯誤出現(xiàn)而引發(fā)的不便,這樣就大大提高工作效率。而且 開發(fā)的系統(tǒng)應(yīng)該簡單易操作,易維護,減少了不必要的麻煩。對于家庭局域網(wǎng) 以及一些比較簡單的中小企業(yè)網(wǎng)
19、,系統(tǒng)必須做到在實際應(yīng)用中較為成功。系統(tǒng) 應(yīng)為用戶提供 windows 所一貫堅持的非常友好、操作簡單的用戶界面。 2)傳輸安全性方案:系統(tǒng)開發(fā)完成后,能有效地使內(nèi)部資源與外網(wǎng)的完全 隔離,從而保證了內(nèi)部機密文件的安全性。 3)經(jīng)濟可行性方案:系統(tǒng)開發(fā)完成必須作到提高文件共享效率,不管是在 資金上還是效率上都能達到預(yù)期的效果的。最重要的一點就是:使用戶避免花 費高額的資金去購買各種移動磁盤甚至是通過 internet 郵件方式,使得用戶方 便的同時,也讓信息少走了不少“彎路” 。 4)快速準確性方案:鑒于系統(tǒng)的目標要求和特點,能夠保證快速準確地實 現(xiàn)文件共享。 綜合上述,本設(shè)計在 window
20、s xp 操作系統(tǒng)下,以中文版 c+6.0 為開發(fā)工 具,以 c/s 為系統(tǒng)功能結(jié)構(gòu),基于點對點的 tcp/ip 協(xié)議理論,通過 socket 套 節(jié)字連接客戶端與服務(wù)器實現(xiàn)文件及文件夾傳輸。徹底避免了文件交換過程與 外部網(wǎng)絡(luò)的接觸,實現(xiàn)快速的文件資源共享。并能夠確保內(nèi)部文件的機密性, 能夠在很大程度上有效地提高工作效率。 3 tcp/ip 協(xié)議協(xié)議 3.1 開放式系統(tǒng)互連參考模型開放式系統(tǒng)互連參考模型 tcp/ip 是 transmission control protocol/internet protocol 的簡寫,中文譯 名為傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議,是當今世界上最廣而不基于任何特定
21、硬件平臺 的網(wǎng)絡(luò)通信協(xié)議.采用 tcp/ip 可以解決異種機聯(lián)網(wǎng)和異種網(wǎng)互連的問題,并可 以訪問當今世界上最有影響力的 internet 網(wǎng) tcp/ip 協(xié)議的基本思想,是通過 網(wǎng)間連接層將各種不同的網(wǎng)絡(luò)連接起來,在各個網(wǎng)絡(luò)的底層協(xié)議之上構(gòu)造一個 虛擬的大網(wǎng),使用戶與其他網(wǎng)的通訊就像與本網(wǎng)的主機通訊一樣方便實現(xiàn),這 一思想的相關(guān)協(xié)議有 telnet、ftp、smtp、tcp、udp、ip、icmp、arp、rarp 等。 tcp/ip 協(xié)議并不完全符合 osi 的七層參考模型。傳統(tǒng)的開放式系統(tǒng)互連參 考模型,是一種通信協(xié)議的 7 層抽象的參考模型,其中每一層執(zhí)行某一特定任 務(wù)。該模型的目的是
22、使各種硬件在相同的層次上相互通信。這 7 層是:物理層、 數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層和應(yīng)用層。而 tcp/ip 通訊協(xié)議 采用了 4 層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的 需求。這 4 層分別為: 應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(smtp) 、文件傳輸 協(xié)議(ftp) 、網(wǎng)絡(luò)遠程訪問協(xié)議(telnet)等。 傳輸層:在此層中,它提供了節(jié)點間的數(shù)據(jù)傳送,應(yīng)用程序之間的通信服 務(wù),主要功能是數(shù)據(jù)格式化、數(shù)據(jù)確認和丟失重傳等。如傳輸控制協(xié)議(tcp) 、 用戶數(shù)據(jù)報協(xié)議(udp)等,tcp 和 udp 給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)?下一層中
23、,這一層負責傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達并接收。 互連網(wǎng)絡(luò)層:負責提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠 到達目的主機(但不檢查是否被正確接收) ,如網(wǎng)際協(xié)議(ip) 。 網(wǎng)絡(luò)接口層(主機-網(wǎng)絡(luò)層):接收 ip 數(shù)據(jù)報并進行傳輸,從網(wǎng)絡(luò)上接收 物理幀,抽取 ip 數(shù)據(jù)報轉(zhuǎn)交給下一層,對實際的網(wǎng)絡(luò)媒體的管理,定義如何使 用實際網(wǎng)絡(luò)(如 ethernet、serial line 等)來傳送數(shù)據(jù)。 3.2 tcp/ip 技術(shù)技術(shù) tcp/ip 是 transmission control protocol/internet protocol 的簡寫,中文譯名 為傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議,
24、是當今世界上最廣而不基于任何特定硬件平臺的 網(wǎng)絡(luò)通信協(xié)議。采用 tcp/ip 可以解決異種機聯(lián)網(wǎng)和異種網(wǎng)互連的問題,并可以 訪問當今世界上最有影響力的 internet 網(wǎng)。tcp/ip 協(xié)議的基本思想是通過網(wǎng)間 連接層將各種不同的網(wǎng)絡(luò)連接起來,在各個網(wǎng)絡(luò)的底層協(xié)議之上構(gòu)造一個虛擬 的大 網(wǎng),使用戶與其他網(wǎng)的通訊就像與本網(wǎng)的主機通訊一樣方便實現(xiàn),這一思想的 相關(guān)協(xié)議有 telnet、ftp、smtp、tcp、udp、ip、icmp、arp、rarp 等。 3.2.1 tcp/ip 體系結(jié)構(gòu)體系結(jié)構(gòu) tcp/ip 協(xié)議實際上就是在物理網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議。其中 tcp 是 提供傳輸層服務(wù),而
25、 ip 則是提供網(wǎng)絡(luò)層服務(wù)。tcp/ip 包括以下協(xié)議(結(jié)構(gòu)如 圖 3-1 所示): 圖 3-1 tcp/ip 協(xié)議體系結(jié)構(gòu) ip: 網(wǎng)間協(xié)議(internet protocol) 負責主機間數(shù)據(jù)的路由和網(wǎng)絡(luò)上數(shù)據(jù)的 存儲。同時為 icmp,tcp,udp 提供分組發(fā)送服務(wù)。用戶進程通常 不需要涉及這一層。 arp: 地址解析協(xié)議(address resolution protocol)此協(xié)議將網(wǎng)絡(luò)地址映射到 硬件地址。 rarp: 反向地址解析協(xié)議(reverse address resolution protocol)此協(xié)議將硬 件地址映射到網(wǎng)絡(luò)地址。 icmp: 網(wǎng)間報文控制協(xié)議(int
26、ernet control message protocol)此協(xié)議處理信 關(guān)和主機的差錯和傳送控制。 tcp: 傳送控制協(xié)議(transmission control protocol)這是一種提供給用戶進 程的可靠的全雙工字節(jié)流面向連接的協(xié)議。它要為用戶進程提供虛電 路服務(wù),并為數(shù)據(jù)可靠傳輸建立檢查。 (注:大多數(shù)網(wǎng)絡(luò)用戶程序使用 tcp) 。 udp: 用戶數(shù)據(jù)報協(xié)議(user datagram protocol)這是提供給用戶進程的無 連接協(xié)議,用于傳送數(shù)據(jù)而不執(zhí)行正確性檢查。 ftp: 文件傳輸協(xié)議(file transfer protocol)允許用戶以文件操作的方式 (文件的增、
27、刪、改、查、傳送等)與另一主機相互通信。 smtp: 簡單郵件傳送協(xié)議(simple mail transfer protocol)smtp 協(xié)議為系統(tǒng) 之間傳送電子郵件。 telnet:終端協(xié)議(telnet terminal protocol)允許用戶以虛終端方式訪問遠 程主機。 http: 超文本傳輸協(xié)議(hypertext transfer protocol) 。是用于從 www 服務(wù) 器傳輸超文本到本地瀏覽器的傳送協(xié)議。它可以使瀏覽器更加高效, 使網(wǎng)絡(luò)傳輸減少 tftp: 簡單文件傳輸協(xié)議(trivial file transfer protocol) 。它是 tcp/ip 協(xié)議 族
28、中的一個用來在客戶機與服務(wù)器之間進行簡單文件傳輸?shù)膮f(xié)議,提 供不復(fù)雜、開銷不大的文件傳輸服務(wù)。 3.2.2 ip 協(xié)議協(xié)議 網(wǎng)際協(xié)議 ip 是 tcp/ip 的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。ip 層接收由 更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包 發(fā)送到更高層-tcp 或 udp 層;相反,ip 層也把從 tcp 或 udp 層接收來的數(shù) 據(jù)包傳送到更低層。ip 數(shù)據(jù)包是不可靠的,因為 ip 并沒有做任何事情來確認數(shù) 據(jù)包是按順序發(fā)送的或者沒有被破壞。ip 數(shù)據(jù)包中含有發(fā)送它的主機的地址 (源地址)和接收它的主機的地址(目的地址) 。高層的 tcp 和 udp 服
29、務(wù) 在接收數(shù)據(jù)包時,通常假設(shè)包中的源地址是有效的。也可以這樣說,ip 地址形 成了許多服務(wù)的認證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個有效的主機發(fā)送來的。 ip 確認包含一個選項,叫做 ip source routing,可以用來指定一條源地址和目的 地址之間的直接路徑。對于一些 tcp 和 udp 的服務(wù)來說,使用了該選項的 ip 包好像是從路徑上的最后一個系統(tǒng)傳遞過來的,而不是來自于它的真實地點。 這個選項是為了測試而存在的,說明了它可以被用來欺騙系統(tǒng)來進行平常是被 禁止的連接。那么,許多依靠 ip 源地址做確認的服務(wù)將產(chǎn)生問題并且會被非法 入侵。 3.2.3 tcp 協(xié)議協(xié)議 tcp/ip 特
30、點特點 tcp/ip 協(xié)議的核心部分是傳輸層協(xié)議(tcp、udp) ,網(wǎng)絡(luò)層協(xié)議(ip)和 物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中實現(xiàn),因此用戶一般不涉及。編 程時,編程界面有兩種形式:一、是由內(nèi)核心直接提供的系統(tǒng)調(diào)用;二、使用 以庫函數(shù)方式提供的各種函數(shù)。前者為核內(nèi)實現(xiàn),后者為核外實現(xiàn)。用戶服務(wù) 要通過核外的應(yīng)用程序才能實現(xiàn),所以要使用套接字(socket)來實現(xiàn),下圖 3-2 就是反映 tcp/ip 協(xié)議核心與應(yīng)用程序的關(guān)系。 應(yīng)用程序1應(yīng)用程序2 網(wǎng)絡(luò)頁面編程界面(socket) tcp/ip核心協(xié)議 物理介質(zhì) 圖 3-2 tcp/ip 協(xié)議的核心與應(yīng)用程序關(guān)系 3.2.4 tcp/i
31、p 傳送文件機制傳送文件機制 下面以采用 tcp/ip 協(xié)議傳送文件為例,說明 tcp/ip 的工作原理,其工作 流程如下: (1)在源主機上,應(yīng)用層將一串應(yīng)用數(shù)據(jù)流傳送給傳輸層。 (2)傳輸層將應(yīng)用層的數(shù)據(jù)流截成分組,并加上 tcp 報頭形成 tcp 段,送 交網(wǎng)絡(luò)層。 (3)在網(wǎng)絡(luò)層給 tcp 段加上包括源、目的主機 ip 地址的 ip 報頭,生成一 個 ip 數(shù)據(jù)包,并將 ip 數(shù)據(jù)包送交鏈路層。 (4)鏈路層在其 mac 幀的數(shù)據(jù)部分裝上 ip 數(shù)據(jù)包,再加上源、目的主機 的 mac 地址和幀頭,并根據(jù)其目的 mac 地址,將 mac 幀發(fā)往目的主機或 ip 路由器。 (5)在目的主機
32、,鏈路層將 mac 幀的幀頭去掉,并將 ip 數(shù)據(jù)包送交網(wǎng)絡(luò) 層。 (6)網(wǎng)絡(luò)層檢查 ip 報頭,如果報頭中校驗和與計算結(jié)果不一致,則丟棄該 ip 數(shù)據(jù)包;若校驗和與計算結(jié)果一致,則去掉 ip 報頭,將 tcp 段送交傳輸層。 (7)傳輸層檢查順序號,判斷是否是正確的 tcp 分組,然后檢查 tcp 報頭 數(shù)據(jù)。若正確,則向源主機發(fā)確認信息;若不正確或丟包,則向源主機要求重 發(fā)信息。 (8)在目的主機,傳輸層去掉 tcp 報頭,將排好順序的分組組成應(yīng)用數(shù)據(jù) 流送給應(yīng)用程序。這樣目的主機接收到的來自源主機的字節(jié)流,就像是直接接 收來自源主機的字節(jié)流一樣。 如果 ip 數(shù)據(jù)包中有已經(jīng)封好的 tcp
33、 數(shù)據(jù)包,那么 ip 將把它們向上傳 送到 tcp 層。tcp 將包排序并進行錯誤檢查,同時實現(xiàn)虛電路間的連接。tcp 數(shù)據(jù)包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包 可以被重傳。tcp 將它的信息送到更高層的應(yīng)用程序,例如 telnet 的服務(wù)程序 和客戶程序。應(yīng)用程序輪流將信息送回 tcp 層,tcp 層便將它們向下傳送到 ip 層,設(shè)備驅(qū)動程序和物理介質(zhì),最后到接收方。面向連接的服務(wù)(例如 telnet、ftp、rlogin、x windows 和 smtp)需要高度的可靠性,所以它們使用 了 tcp。dns 在某些情況下使用 tcp(發(fā)送和接收域名數(shù)據(jù)庫) ,但使
34、用 udp 傳送有關(guān)單個主機的信息。 4 socket 網(wǎng)絡(luò)程序設(shè)計技術(shù)網(wǎng)絡(luò)程序設(shè)計技術(shù) 4.1 socket 編程編程 文件傳輸系統(tǒng)得以實現(xiàn)的根本在于建立有效的連接以及是否存在文件傳輸 載體。所謂 socket 通常也稱作套接字,用于描述 ip 地址和端口,socket 類表 現(xiàn)了客戶端套接字,它是屬于兩臺計算機的兩個 tcp 通訊端口之間的通訊通道。 在網(wǎng)絡(luò)編程中,客戶端使用 socket 對網(wǎng)絡(luò)上某一個服務(wù)器的某一個端口發(fā)出連 接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉 socket??蛻舳瞬恍枰?指定打開的端口。服務(wù)器使用 socket 監(jiān)聽指定的端口,端口可以隨意指定,等 待客
35、戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉連接。 4.1.1 winsock 簡介簡介 以 u.c. berkeley 大學 bsd unix 中流行的 socket 接口為范例定義了一套 microsoft windows 下網(wǎng)絡(luò)編程接口。它不僅包含了人們所熟悉的 berkeley socket 風格的庫函數(shù);也包含了一組針對 windows 的擴展庫函數(shù),以使程序員 能充分地利用 windows 消息驅(qū)動機制進行編程。windows sockets 規(guī)范本意在 于提供給應(yīng)用程序開發(fā)者一套簡單的 api,并讓各家網(wǎng)絡(luò)軟件供應(yīng)商共同遵守。 此外,在一個特定版本 windows 的基礎(chǔ)
36、上,windows sockets 也定義了一個二 進制接口(abi) ,以此來保證應(yīng)用 windows sockets api 的應(yīng)用程序能夠在任 何網(wǎng)絡(luò)軟件供應(yīng)商的符合 windows sockets 協(xié)議的實現(xiàn)上工作。因此這份規(guī)范 定義了應(yīng)用程序開發(fā)者能夠使用,并且網(wǎng)絡(luò)軟件供應(yīng)商能夠?qū)崿F(xiàn)的一套庫函數(shù) 調(diào)用和相關(guān)語義。遵守這套 windows sockets 規(guī)范的網(wǎng)絡(luò)軟件,我們稱之為 windows sockets 兼容的,而 windows sockets 兼容實現(xiàn)的提供者,我們稱之為 windows sockets 提供者。一個網(wǎng)絡(luò)軟件供應(yīng)商必須百分之百地實現(xiàn) windows soc
37、kets 規(guī)范才能做到現(xiàn) windows sockets 兼容。任何能夠與 windows sockets 兼容實現(xiàn)協(xié)同工作的應(yīng)用程序就被認為是具有 windows sockets 接口。我們稱 這種應(yīng)用程序為 windows sockets 應(yīng)用程序。windows sockets 規(guī)范定義并記錄 了如何使用 api 與 internet 協(xié)議族(ips,通常我們指的是 tcp/ip)連接,尤其 要指出所有的 windows sockets 實現(xiàn)都支持流套接口和數(shù)據(jù)報套接口。應(yīng)用程序調(diào)用 windows sockets 的 api 實現(xiàn)相互之間的通訊。windows sockets 又利用下
38、層的網(wǎng)絡(luò)通訊 協(xié)議功能和操作系統(tǒng)調(diào)用實現(xiàn)實際的通訊工作。 為了方便網(wǎng)絡(luò)編程,microsoft 聯(lián)合了其他幾家公司共同制定了一套 windows 下的網(wǎng)絡(luò)編程接口,即 windows sockets 規(guī)范,它不是一種網(wǎng)絡(luò)協(xié) 議,而是一套開放的、支持多種協(xié)議的 windows 下的網(wǎng)絡(luò)編程接口?,F(xiàn)在的 winsock 已經(jīng)基本上實現(xiàn)了與協(xié)議無關(guān),你可以使用 winsock 來調(diào)用多種協(xié)議 的功能,但 較常使用的是 tcp/ip 協(xié)議。socket 實際在計算機中提供了一個通信端口,可以 通過這個端口與任何一個具有 socket 接口的計算機通信。應(yīng)用程序在網(wǎng)絡(luò)上傳 輸和接收的信息都通過這個 so
39、cket 接口來實現(xiàn)。 winsock 規(guī)范定義了一套可使網(wǎng)絡(luò)程序開發(fā)人員在 windows 下開發(fā)標準的 tcp/ip 網(wǎng)絡(luò)程序接口,它不僅包含人們所熟悉的 berkeley socket 風格的庫函數(shù), 還包含了一組針對 windows 的擴展庫函數(shù),以使程序員能充分地利用 windows 消息驅(qū)動機制、異步網(wǎng)絡(luò)事件選擇方式進行編程。winsock 規(guī)范定義并記錄了 任何使用 api 與 internet 通訊協(xié)議(isp 通常指 tcp/ip)連接。應(yīng)用程序使用 windows sockets 的 api,而 windows sockets 又利用下層的網(wǎng)絡(luò)通信協(xié)議與操 作系統(tǒng)以產(chǎn)生實際
40、的通信,它們之間的關(guān)系如下圖 4-1 所示。 應(yīng)用程序1應(yīng)用程序2應(yīng)用程序3 網(wǎng)絡(luò)程序接口(windows sockets) 網(wǎng)絡(luò)通信程序接口(tcp/ip) 操作系統(tǒng) 圖 4-1 應(yīng)用程序與 windows sockets 關(guān)系圖 4.1.2 winsock 通信機制通信機制 應(yīng)用程序的網(wǎng)絡(luò)通信歸根結(jié)底是利用相同的通信協(xié)議來完成信息的傳輸, 應(yīng)用程序和 winsock 都工作在 windows 的用戶模式下,操作系統(tǒng)僅僅通過 winsock 是不能完成網(wǎng)絡(luò)間的通信,還需要底層的支持,而套接字仿真器(套 接字核心模式驅(qū)動程序)和傳輸驅(qū)動程序接口(transport driver interfa
41、ce,tdi)是負責操作系統(tǒng)核心態(tài)環(huán)境下的網(wǎng)絡(luò)通信,起到了 winsock 和 傳輸協(xié)議之間的通信橋梁作用。如圖 4-2 所示,winsock 是網(wǎng)絡(luò)通信應(yīng)用程序 于套接字仿真器間的接口,tdi 是套接字仿真器和傳輸協(xié)議間的接口套接字核 心模式,驅(qū)動程序復(fù)雜連接和緩沖區(qū)管理,以便向應(yīng)用程序提供套接字仿真 (在 afdsys 文件中實現(xiàn)) ,同時負責與底層傳輸驅(qū)動程序?qū)υ拏鬏旘?qū)動程序 接口(tdi)負責核心模式驅(qū)動程序與傳輸協(xié)議間的通信。 應(yīng)用程序 套接字仿真器 傳輸協(xié)議 套接字 傳輸驅(qū)動程序接口 圖 4-2 套接字通信機制示意圖 當應(yīng)用程序利用 winsock 發(fā)送和接受數(shù)據(jù)時,并不是由 wi
42、nsock 從網(wǎng)絡(luò)上 發(fā)送和接收數(shù)據(jù)的,而是由核心模式驅(qū)動程序 afdsys 負責管理發(fā)送和接收緩 沖區(qū)來發(fā)送和接收數(shù)據(jù)。也就是說,當應(yīng)用程序調(diào)用 send 或 wsasend 函數(shù)來 發(fā)送數(shù)據(jù)時,afdsys 將把數(shù)據(jù)復(fù)制進他自己的發(fā)送緩沖區(qū),然后 send 后 wsasend 函數(shù)立即返回 afdsys 在后臺負責把數(shù)據(jù)發(fā)送出去,遠程客戶端接 收數(shù)據(jù)的情況也類似,由接收方的 afdsys 在后臺負責把數(shù)據(jù)復(fù)制到自己的接 收緩沖區(qū),然后當應(yīng)用程序調(diào)用 recv 后 wsarecv 函數(shù)來接收數(shù)據(jù)時,把數(shù)據(jù) 由 afdsys 管理的接收緩沖區(qū)復(fù)制到應(yīng)用程序提供的緩沖區(qū)中。 afdsys 管 理
43、的發(fā)送緩沖區(qū) so-sndbuf 和接收緩沖區(qū) so-rcvbuf 在缺省時兩個緩沖區(qū) 的大小都為 8192 個字節(jié),但可以根據(jù)實際要求由應(yīng)用程序設(shè)定,由于我們傳輸 的對象可能是大數(shù)據(jù)量文件,因此需要對系統(tǒng)的發(fā)送緩沖區(qū)和接收緩沖區(qū)作相 應(yīng)的設(shè)定,以保障大數(shù)據(jù)量的文件數(shù)據(jù)的發(fā)送和接收。 sockets 的實質(zhì)是通信端點的一種抽象,它提供一種發(fā)送和接受數(shù)據(jù)的機制。 根據(jù)通信性質(zhì)不同可分為:stream sockets(流式套接字)和 datagram sockets(數(shù)據(jù)報套接字) ,如圖 4-3 所示為這兩種套接字的基本通信方式。其中 stream sockets 提供無差錯的、面向連接的、無長
44、度限制的雙向字節(jié)流傳輸,適 應(yīng)于處理大量數(shù)據(jù),尤其適合于 ftp 服務(wù)。datagram sockets 支持雙向的數(shù)據(jù) 傳輸、但傳輸過程中不能保證可靠性和無差錯性;本設(shè)計的程序設(shè)計中選擇 stream sockets 來完成 c/s 模式的通信,保證能夠數(shù)據(jù)準確、無誤的傳輸。 server socket() bind() listen() accept blocks until connection from client read() process request write() client() socket() connect() writer() read() server soc
45、ket() bind() recvfrom() blocks until data received from client process request send to() client() socket() bind() send to() recvfrom() 面向連接的流方式非連接的數(shù)據(jù)包方式 圖 4-3 socket 的兩種通信方式 4.1.3 winsock 編程模型編程模型 a建立一個建立一個 socket 為了建立 socket,程序調(diào)用 socket 函數(shù)如下: sockethandle=socket(“協(xié)議簇”, “socket 類型”, “協(xié)議”) ; winsock
46、函數(shù)含有三個參數(shù), “協(xié)議簇”參數(shù)指明像 tcp/ip 協(xié)議組這樣的一組相 關(guān)協(xié)議, “socket 類型”參數(shù)指明參數(shù)指明程序是進行數(shù)據(jù)報傳輸還是字節(jié)流傳輸, “協(xié)議”參數(shù)定義了協(xié)議族內(nèi)程序欲使用的具體協(xié)議(如 tcp 或 udp) 。 由于編程時必須指定程序使用的協(xié)議簇,因而能夠為使用不同協(xié)議組和地 址格式的網(wǎng)絡(luò)建立相同的接口。也就是說,本函數(shù)的正確調(diào)用可使 winsock 接 口運行在多個網(wǎng)絡(luò)上。下面語句顯示了一個典型的具體 winsock 函數(shù)調(diào)用: sockethandle=socket(pfinet,sockstream,ipprototcp) ; 這個 winsock 使用 in
47、ternet 協(xié)議簇(pfinet)的 tcp 協(xié)議(ipproto tcp)進行字節(jié)流(sockstream)通信。當程序調(diào)用 winsock 函數(shù)建立 一個新 socket 時,winsock 將為一個內(nèi)部數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存,此結(jié)構(gòu)中保存有 關(guān)此 socket 的信息。 b.配置一個配置一個 socket 程序可使用 winsock 中不同的函數(shù)來配置一個 socket。每個 socket 需要五 種信息:本地和遠地本機的 ip 地址、本地和遠地進程的協(xié)議端口、連接使用的 協(xié)議。 面向連接的協(xié)議在連接端點之間建立一條虛電路,面向連接的客戶程序不 必關(guān)心網(wǎng)絡(luò)軟件使用怎樣的本地地址傳輸數(shù)據(jù)。建立
48、好連接后,客戶程序依靠 tcp 協(xié)議給它傳送數(shù)據(jù)。因此面向連接的客戶程序不需指明本地協(xié)議端口,它 提供給 socket 的唯一地址信息是遠地服務(wù)器信息(ip 地址和協(xié)議端口) 。 winsock 自動保存本地 ip 地址和選擇本地協(xié)議端口,并確??蛻舫绦蚴盏絺鬏?層送給本地協(xié)議端口的所有數(shù)據(jù)。也就是說,winsock 為程序選擇協(xié)議端口, 當數(shù)據(jù)到達此端口時通知程序,程序不必關(guān)心 winsock 使用哪一個協(xié)議端口。 在前一步已建立的 socket 基礎(chǔ)上,面向連接的客戶程序使用 connect 函數(shù) 來配置 socket。 result=connect(“socket 句柄”, “遠地 so
49、cket 地址”, “遠地 socket 地址”) ; 此時,內(nèi)部數(shù)據(jù)結(jié)構(gòu)就包含了網(wǎng)絡(luò)通信必須的五種信息。只有面向連接的 客戶進程才啟動與遠地服務(wù)器 socket 的直接連接。 無連接協(xié)議不建立與遠地服務(wù)器的直接連接。使用無連接協(xié)議的客戶程序 必須發(fā)送一個帶有服務(wù)請求的數(shù)據(jù)報并等待應(yīng)答,遠地服務(wù)器的應(yīng)答以數(shù)據(jù)報 的形式到達。winsock 用 bind 函數(shù)給 socket 指定一個本地 ip 地址和一個協(xié)議 端口,其典型調(diào)用如下: result=bind(“socket 句柄”, “本地 socket 地址”, “本地 socket 地址長度”) ; 服務(wù)器程序使用 bind 函數(shù)用 win
50、sock 登記一個協(xié)議端口,程序告訴 winsock 監(jiān)視哪一個協(xié)議端口的數(shù)據(jù)傳送,winsock 接著告訴傳輸層將此協(xié)議 端口收到的數(shù)據(jù)傳送給 winsock。 c.使用使用 socket 配置好一個 socket 后,程序就能夠使用 winsock 在網(wǎng)絡(luò)上傳送和接收數(shù)據(jù) 了。winsock 有四個函數(shù):兩個用于數(shù)據(jù)傳送(send、sendto) ,兩個用于數(shù)據(jù) 接收(recv、recvfrom) 。由于 send 和 recv 函數(shù)不能指定目的地址,只能用于面 向連接的 socket,其典型調(diào)用過程為: result=send(“socket 句柄”, “報文緩沖區(qū)”, “緩沖區(qū)長度”,
51、 “特殊標志”) ; winsock 將從 socket 句柄確定的內(nèi)部 socket 數(shù)據(jù)結(jié)構(gòu)中獲取目的地址信息, 接著 send 函數(shù)將傳送報文緩沖區(qū)中的數(shù)據(jù),這些數(shù)據(jù)將被傳送到 winsock 內(nèi)部 socket 數(shù)據(jù)結(jié)構(gòu)中指明的網(wǎng)絡(luò)地址中去。recv 函數(shù)與之相對應(yīng),其調(diào)用過程為: result=recv(“socket 句柄”, “報文緩沖區(qū)”, “緩沖區(qū)長度”, “特殊標志”) ; 程序在無連接的 socket 上使用 sendto 和 recvfrom 函數(shù),其使用如下: result=sendto(“socket 句柄”, “報文緩沖區(qū)”, “緩沖區(qū)長度”, “特殊標志”, “
52、socket 地址結(jié)構(gòu)”, “地址結(jié)構(gòu)長度”) ; result=recvfrom(“socket 句柄”, “報文緩沖區(qū)”, “緩沖區(qū)長度”, “特殊標志”, “socket 地址結(jié)構(gòu)”, “地址結(jié)構(gòu)長度”) ; sendto 函數(shù)在 winsock 的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中保存遠地服務(wù)器信息,在程序調(diào) 用 sendto 函數(shù)之前,必須在一個 socket 數(shù)據(jù)結(jié)構(gòu)中保存遠地服務(wù)器信息,程序 將此地址結(jié)構(gòu)的指針傳遞給 sendto 函數(shù)。當 winsock 需要傳輸層傳送 sendto 報 文緩沖區(qū)中的數(shù)據(jù)時,winsock 將其內(nèi)部數(shù)據(jù)結(jié)構(gòu)保存的信息傳送給傳輸層, 傳輸層使用此數(shù)據(jù)結(jié)構(gòu)中的信息格式
53、化 udp 數(shù)據(jù)報頭,并將此數(shù)據(jù)通過網(wǎng)絡(luò)傳 送。使用 recvfrom 函數(shù)的服務(wù)器需要分離出發(fā)送者的地址,客戶程序使用 recvfrom 函數(shù)時,如果客戶想繼續(xù)進行網(wǎng)絡(luò)對話,就需要分離出發(fā)送者的地址。 “特殊標志”參數(shù)使用符號常數(shù) msgoob 作為標志值,表示可以從協(xié)議端 口請求帶外數(shù)據(jù)。帶外數(shù)據(jù)是程序必須立即處理的緊急數(shù)據(jù),如存在帶外數(shù)據(jù), 函數(shù)立即將緊急數(shù)據(jù)返回給程序,如果沒有帶外數(shù)據(jù),函數(shù)返回常數(shù)錯誤值 einval。若“特殊標志”參數(shù)使用符號常數(shù) msgpeek 作為標志值,表 示可以對傳輸層輸入隊列中的數(shù)據(jù)進行分析。如果不需使用這兩個標志,可將 “特殊標志”參數(shù)指定為 0。 4.
54、2 主要函數(shù)介紹主要函數(shù)介紹 accept: 定義函數(shù): int accept(int s,struct sockaddr * addr,int * addrlen); 函數(shù)說明: accept()用來接受參數(shù) s 的 socket 連線。參數(shù) s 的 socket 必需先經(jīng) bind()、 listen()函數(shù)處理過,當有連線進來時 accept()會返回一個新的 socket 處理代碼, 往后的數(shù)據(jù)傳送與讀取就是經(jīng)由新的 socket 處理,而原來參數(shù) s 的 socket 能繼 續(xù)使用 accept()來接受新的連線要求。連線成功時,參數(shù) addr 所指的結(jié)構(gòu)會被 系統(tǒng)填入遠程主機的地址
55、數(shù)據(jù),參數(shù) addrlen 為 scokaddr 的結(jié)構(gòu)長度。 返回值: 成功則返回新的 socket 處理代碼, 失敗返回-1,錯誤原因存于 errno 中。 錯誤代碼: ebadf 參數(shù) s 非合法 socket 處理代碼。 efault 參數(shù) addr 指針指向無法存取的內(nèi)存空間。 enotsock 參數(shù) s 為一文件描述詞,非 socket。 eopnotsupp 指定的 socket 并非 sock_stream。 eperm 防火墻拒絕此連線。 enobufs 系統(tǒng)的緩沖內(nèi)存不足。 enomem 核心內(nèi)存不足。 bind: 定義函數(shù): int bind(int sockfd,str
56、uct sockaddr * my_addr,int addrlen); 函數(shù)說明: bind()用來設(shè)置給參數(shù) sockfd 的 socket 一個名稱。此名稱由參數(shù) my_addr 指向一 sockaddr 結(jié)構(gòu),對于不同的 socket domain 定義了一個通用的數(shù)據(jù)結(jié)構(gòu): struct sockaddr unsigned short int sa_family; char sa_data; ; 參數(shù): sa_family 為調(diào)用 socket()時的 domain 參數(shù),即 af_xxxx 值。 sa_data 最多使用 14 個字符長度。 此 sockaddr 結(jié)構(gòu)會因使用不同
57、的 socket domain 而有不同結(jié)構(gòu)定義。例如使用 af_inet domain, 其 socketaddr 結(jié)構(gòu)定義便為: struct socketaddr_in unsigned short int sin_family; uint16_t sin_port; struct in_addr sin_addr; unsigned char sin_zero; ; struct in_addr uint32_t s_addr; ; 參數(shù): sin_family 即為 sa_family sin_port 為使用的 port 編號 sin_addr.s_addr 為 ip 地址 sin
58、_zero 未使用。 addrlen 為 sockaddr 的結(jié)構(gòu)長度。 返回值: 成功則返回 0, 失敗返回-1,錯誤原因存于 errno 中。 錯誤代碼: ebadf 參數(shù) sockfd 非合法 socket 處理代碼。 eaccess 權(quán)限不足 enotsock 參數(shù) sockfd 為一文件描述詞,非 socket。 listen: 定義函數(shù): int listen(int s,int backlog); 函數(shù)說明: listen()用來等待參數(shù) s 的 socket 連線。參數(shù) backlog 指定同時能處理的最 大連接要求,如果連接數(shù)目達此上限則 client 端將收到 econnr
59、efused 的錯 誤。 listen()并未開始接收連線,只是設(shè)置 socket 為 listen 模式,真正接收 client 端連 線的是 accept()。通常 listen()會在 socket(),bind()之后調(diào)用,接著才調(diào)用 accept()。 返回值: 成功則返回 0, 失敗返回-1,錯誤原因存于 errno 附加說明: listen()只適用 sock_stream 或 sock_seqpacket 的 socket 類型。如果 socket 為 af_inet 則參數(shù) backlog 最大值可設(shè)至 128。 錯誤代碼: ebadf 參數(shù) sockfd 非合法 socke
60、t 處理代碼 eaccess 權(quán)限不足 eopnotsupp 指定的 socket 并未支援 listen 模式。 connect: 定義函數(shù): int connect (int sockfd,struct sockaddr * serv_addr,int addrlen); 函數(shù)說明: connect()用來將參數(shù) sockfd 的 socket 連至參數(shù) serv_addr 指定的網(wǎng)絡(luò)地址。 結(jié)構(gòu) sockaddr 請參考 bind()。參數(shù) addrlen 為 sockaddr 的結(jié)構(gòu)長度。 返回值: 成功則返回 0, 失敗返回-1,錯誤原因存于 errno 中。 錯誤代碼: ebadf
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度大型商場機電安裝工程勞務(wù)合作合同范本
- 2025年度汽車銷售居間代理合同模板下載
- 2025年度股權(quán)投資項目管理合同
- 2025年度離婚協(xié)議書起草與婚姻財產(chǎn)分析合同
- 2025年度綠色建筑設(shè)計水電一體化工程承包合同
- 2025年度公交企業(yè)司機勞動權(quán)益保障合同
- 2025年度貨物配送與智能分揀系統(tǒng)應(yīng)用合同
- 2025年度水下作業(yè)設(shè)備吊裝運輸與潛水作業(yè)合同
- 2025年度交換機設(shè)備融資租賃合同-@-1
- 2025年度護士護理科研合作合同
- 柴油機油-標準
- 監(jiān)獄安全課件
- 《初三開學第一課 中考動員會 中考沖刺班會》課件
- 護理干預(yù)在慢性病管理中的作用
- 慢性萎縮性胃炎的護理查房
- 住院醫(yī)師規(guī)范化培訓臨床實踐能力結(jié)業(yè)??萍寄芸己耍ㄈ漆t(yī)學科)婦科檢查及分泌物留取
- 加強網(wǎng)絡(luò)空間治理工作的調(diào)研與思考
- 產(chǎn)后修復(fù)學習培訓課件
- mysql課件第五章數(shù)據(jù)查詢
- 超濾培訓課件
- 中醫(yī)防感冒健康知識講座
評論
0/150
提交評論