freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文遠(yuǎn)程計(jì)算機(jī)網(wǎng)絡(luò)管理(編輯修改稿)

2025-07-23 03:21 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 了不同主機(jī)間進(jìn)程通信的斷點(diǎn),這些進(jìn)程在通信前各自建立一個(gè) Socket,通過(guò)調(diào)用 Socket 的 API 實(shí)現(xiàn)網(wǎng)絡(luò)通信,而 Socket 利用下層的網(wǎng)絡(luò)通信協(xié)議和操作系統(tǒng)的調(diào)用完成網(wǎng)絡(luò)通信。如圖 23 所示,這樣就屏蔽了網(wǎng)絡(luò)底層的結(jié)構(gòu)和協(xié)議,應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收數(shù)據(jù)都通過(guò) Socket 接口來(lái)實(shí)現(xiàn),在應(yīng)用開發(fā)中就像使用句柄一樣,可以對(duì) Socket 句柄進(jìn)行讀,寫操作。圖 23 網(wǎng)絡(luò)通信 socket 套接字編程原理套接字有三種類型:流式套接字(Stream Socket) 、數(shù)據(jù)報(bào)套接字( Datagram Socket)及原始套接字(Raw Socket) 。流式套接字式是最常用的套接字是 TCP/IP 協(xié)議中 TCP 協(xié)議使用的接口。它提供可靠的面向連接服務(wù)。實(shí)現(xiàn)了無(wú)差錯(cuò)無(wú)重復(fù)的順序數(shù)據(jù)傳輸。數(shù)據(jù)報(bào)套接字是 TCP/IP 協(xié)議中UDP 協(xié)議的使用接口。它定義一種無(wú)連接的服務(wù),數(shù)據(jù)通過(guò)相互獨(dú)立的報(bào)文進(jìn)行傳輸,是無(wú)序的,并且不保證可靠,無(wú)差錯(cuò)。原始套接字允許對(duì)網(wǎng)絡(luò)底層協(xié)議(如 IP 和 ICMP)直接訪問(wèn),主要用于新的網(wǎng)絡(luò)協(xié)議的測(cè)試等,不提供給普通用戶使用。一般情況下,我們使用流式套接字和數(shù)據(jù)報(bào)套接字來(lái)開發(fā)網(wǎng)絡(luò)通信程序,流式套接字提供高可靠的阿服務(wù),數(shù)據(jù)報(bào)提供高效率的服務(wù),高可靠的通信用于傳輸需要交換大量報(bào)文的場(chǎng)合如文件傳輸、遠(yuǎn)程登陸等;高效率的通信用于一次傳輸交換少量的報(bào)文如數(shù)據(jù)庫(kù)查詢等,其可靠性由應(yīng)用程序保證,應(yīng)為需要交換的信息較少,即使發(fā)生錯(cuò)誤傳輸需要重傳也不會(huì)付出太大的代價(jià)。無(wú)連接服務(wù)器一般是面向事務(wù)處理的,一個(gè)請(qǐng)求一個(gè)應(yīng)答就完成了客戶程序和服務(wù)程序之間的相互作用。若使用無(wú)連接的套接字編程,程序流程如圖 24 所示:圖 24 無(wú)連接的套接字的系統(tǒng)調(diào)用時(shí)序圖面向連接服務(wù)器處理的請(qǐng)求比較復(fù)雜,不是一來(lái)一去的簡(jiǎn)單的請(qǐng)求應(yīng)答所能解決的,所以往往是并發(fā)服務(wù),使用面向連接的套接字編程。圖 25 面向連接的套接字的系統(tǒng)調(diào)用時(shí)序圖 通信方式選擇   在進(jìn)行網(wǎng)絡(luò)開發(fā),首先必須選擇阻塞方式還是非阻塞方式進(jìn)行通信。處于阻塞模式的函數(shù)轉(zhuǎn)調(diào)操作完成后才返回。由于調(diào)用這些函數(shù)的套接字直到返回前不能做任何事,因此被稱為阻塞函數(shù)。而當(dāng)套接字處于非阻塞模式時(shí),API 函數(shù)的調(diào)用立刻返回,大多數(shù)情況下這些調(diào)用都會(huì)“失敗” ,并且返回一個(gè)“WSAEAEWOULDBLOCK”錯(cuò)誤,這意味請(qǐng)求的操作在調(diào)用期間沒(méi)有時(shí)間完成。在網(wǎng)絡(luò)通訊中,由于網(wǎng)絡(luò)擁擠或一次發(fā)送的數(shù)據(jù)量過(guò)大等原因,經(jīng)常會(huì)發(fā)生數(shù)據(jù)交換的數(shù)據(jù)在短時(shí)間內(nèi)不能傳送完,收發(fā)數(shù)據(jù)的函數(shù)因此不能返回,這就造成了阻塞。利用調(diào)用函數(shù) recv()時(shí),如果數(shù)據(jù)還未到達(dá),系統(tǒng)則在此掛起,直到數(shù)據(jù)到達(dá)或接收到高級(jí)的中斷信號(hào)為止。WinSock 對(duì)有可能阻塞的函數(shù)提供了兩種處理方式:同步和異步方式。在同步方式下,收發(fā)數(shù)據(jù)的函數(shù)在被調(diào)用后一直要到傳送完畢或者出錯(cuò)才能返回。對(duì)于異步方式,函數(shù)被調(diào)用后立即返回,當(dāng)傳送完成后 WinSock 給程序發(fā)送一個(gè)實(shí)現(xiàn)約定好的消息。Berkeley Socket 一般采用阻塞的工作方式,這種方式比較適合 UNIX 操作系統(tǒng)。而Windows 下不再適用了。因?yàn)橐坏┌l(fā)生阻塞, CPU 的控制權(quán)會(huì)一直被占用,容易發(fā)生死機(jī)。因此,Windows Socket 在 Berkeley Socket 基礎(chǔ)上進(jìn)行了擴(kuò)充,提供了一些異步函數(shù),增加了符合 Window:消息驅(qū)動(dòng)特性的網(wǎng)絡(luò)事件異步選擇機(jī)制,以開發(fā)符合 Windows 特性的高效率的網(wǎng)絡(luò)程序。在 Windows 環(huán)境下開發(fā)網(wǎng)絡(luò)通信盡量要采用非阻塞方式操作,因?yàn)榉亲枞绞皆诜菗屜萕indows 操作系統(tǒng)下能夠更好得工作。 Windows Socket 通過(guò)異步選擇函數(shù)WSAAsyncSelectQ 來(lái)實(shí)現(xiàn)非阻塞通信,它提供了對(duì)網(wǎng)絡(luò)事件基于消息的異步存取,可用該函數(shù)注冊(cè)應(yīng)用程序感興趣的網(wǎng)絡(luò)事件,如有數(shù)據(jù)到達(dá)、可以發(fā)送數(shù)據(jù)或有程序請(qǐng)求連接等網(wǎng)絡(luò)事件發(fā)生時(shí),會(huì)調(diào)用 向窗口應(yīng)用程序發(fā)送特定的消息,程序就可以根據(jù)消息作相應(yīng)處理。 套接字工作流程1.創(chuàng)建套接字 程序在通信前,首先必須擁有一個(gè)套接字,系統(tǒng)調(diào)用 socket()向應(yīng)用程序提供創(chuàng)建套接字的手段,其調(diào)用格式如下: Dim clientSocket as New Socket(, )socket 的創(chuàng)建需要三個(gè)參數(shù):AddressFamily 枚舉指定 Socket 類用來(lái)解析網(wǎng)絡(luò)地址的標(biāo)準(zhǔn)地址族, 是成員指定使用 IP 版本 4 地址族。SocketType 枚舉指定套接字的類型, 成員表示一個(gè)用于發(fā)送和接收數(shù)據(jù)并且支持流控制的標(biāo)準(zhǔn)套接字。ProtocolType 枚舉指定在 Socket 上通信時(shí)使用的網(wǎng)絡(luò)協(xié)議 指示套接字使用 TCP; 指示套接字使用 UDP。2.配置 socket 當(dāng)一個(gè)套接字用 socket()創(chuàng)建后,需要使用制定本地的終結(jié)點(diǎn)。 bind()將套接字地址(包括本地主機(jī)地址和本地端口地址)與所創(chuàng)建的套接字號(hào)關(guān)系起來(lái),即將名字賦予套接字,以指定與本地相關(guān)。調(diào)用 Bind 之前,必須首先創(chuàng)建打算從其進(jìn)行數(shù)據(jù)通信的本地IPEndPoint。如果對(duì)制定的套接字地址沒(méi)有要求,則可以用 作為地址參數(shù)創(chuàng)建一個(gè) IPEndPoint,這樣,基礎(chǔ)服務(wù)提供程序?qū)?huì)分配最適合的網(wǎng)絡(luò)地址。如果本地存在多個(gè)網(wǎng)絡(luò)接口,這將有助于簡(jiǎn)化應(yīng)用程序。同樣對(duì)于端口不需特定的話,則可以創(chuàng)建一個(gè)使用 0 作為端口號(hào)的 IPEndPoint。在這種情況下,服務(wù)提供程序?qū)?huì)分配一個(gè)可用的端口號(hào)。其調(diào)用方法如下:Dim localEndPoint As New IPEndPoint( 12345) (localEndPoint)采用面向連接的服務(wù)器需要使用 listen()來(lái)監(jiān)聽端口同時(shí)指出接受請(qǐng)求的隊(duì)列長(zhǎng)度,其調(diào)用方法如下:(1) 39。由于該系統(tǒng)使用 P2P 控制所以設(shè)定隊(duì)列長(zhǎng)度為 1Dim handler As Socket = () 39。同意接入請(qǐng)求3.建立套接字連接 connect()和 accept() 這兩個(gè)函數(shù)調(diào)用用于完成一個(gè)完整相關(guān)的連接,其中 connect()用于建立連接。無(wú)連接的套接字進(jìn)程也可以調(diào)用 connect(),但這時(shí)在進(jìn)程之間沒(méi)有實(shí)際的報(bào)文交換,調(diào)用將從本地操作系統(tǒng)直接返回。這樣做的優(yōu)點(diǎn)是不必為每一數(shù)據(jù)指定目的地址,而且如果收到的一個(gè)數(shù)據(jù)報(bào),其目的端口未與任何套接字建立“連接” ,便能判斷該端口不可操作。而accept()用于使服務(wù)器等待來(lái)自某客戶進(jìn)程的實(shí)際連接。connect()的調(diào)用方法如下:Public Sub Connect( ByVal remoteEP As EndPoint)accept()用于面向連接服務(wù)器。參數(shù) addr 和 addrlen 存放客戶方的地址信息。調(diào)用前,參數(shù) addr 指向一個(gè)初始值為空的地址結(jié)構(gòu),而 addrlen 的初始值為 0。調(diào)用 accept()后,服務(wù)器等待從編號(hào)為 s 的套接字上接受客戶連接請(qǐng)求,而連接請(qǐng)求是由客戶方的 connect()調(diào)用發(fā)出的。當(dāng)有連接請(qǐng)求到達(dá)時(shí),accept)調(diào)用將請(qǐng)求連接隊(duì)列上的第一個(gè)客戶方套接字地址及長(zhǎng)度放入 addr 和 addrlen,并創(chuàng)建一個(gè)與 S 有相同特性的新套接字號(hào)。新的套接字可用于處理服務(wù)器并發(fā)請(qǐng)求。accept()調(diào)用方法如下:Public Function Accept() As Socket4.?dāng)?shù)據(jù)傳輸 send()和 receive() 當(dāng) socket 建立完成后,調(diào)用這兩個(gè)函數(shù)用來(lái)傳輸數(shù)據(jù)。send()調(diào)用用于在參數(shù) s 指定的己連接的數(shù)據(jù)報(bào)或流套接字上發(fā)送輸出數(shù)據(jù),其格式如下:Overloads Public Function Send( ByVal buffer() As Byte ) As Integerreceive()調(diào)用用于在參數(shù) S 指定的已連接的數(shù)據(jù)報(bào)或流套接字上接收輸入數(shù)據(jù),格式如下:Overloads Public Function Receive( ByVal buffer() As Byte ) As Integer5.socket 關(guān)閉Close 方法可關(guān)閉遠(yuǎn)程主機(jī)連接,并釋放所有與 Socket 關(guān)聯(lián)的托管資源和非托管資源。調(diào)用方法如下:Public Sub Close() 多線程技術(shù)線程是進(jìn)程的一條執(zhí)行路徑,他包含獨(dú)立的堆棧和 CPU 寄存器狀態(tài),每個(gè)線程共享所有的進(jìn)程資源,一個(gè)進(jìn)程內(nèi)的所有線程使用同一個(gè)地址空間,而這些線程的執(zhí)行由系統(tǒng)調(diào)度程序控制,調(diào)度程序決定哪個(gè)線程可執(zhí)行以及什么時(shí)候執(zhí)行線程。線程有優(yōu)先級(jí)別,優(yōu)先權(quán)較低的線程必須等到優(yōu)先權(quán)較高的線程執(zhí)行完后再執(zhí)行。在多處理器的機(jī)器上,調(diào)度程序可將多個(gè)線程放到不同的處理器上運(yùn)行,以提高系統(tǒng)的運(yùn)行效率。線程是進(jìn)程內(nèi)部的一個(gè)可執(zhí)行路徑,它是 CPU 調(diào)度的單位,是進(jìn)程的一個(gè)執(zhí)行單元。所謂的多線程就是一個(gè)進(jìn)程內(nèi)可以有一個(gè)或多個(gè)可獨(dú)立執(zhí)行的單元,每個(gè)單元就是一個(gè)線程。一個(gè)應(yīng)用程序可以創(chuàng)建多個(gè)線程,多個(gè)不同的執(zhí)行流,并同時(shí)運(yùn)行這些線程。線程機(jī)制使系統(tǒng)具有了多任務(wù)功能,這樣用戶就可以同時(shí)運(yùn)行多個(gè)運(yùn)用程序,且在每一個(gè)應(yīng)用程序中又可以同時(shí)運(yùn)行多個(gè)線程。這樣多個(gè)線程并發(fā)地在同一進(jìn)程中。一個(gè)進(jìn)程至少擁有一個(gè)線程,即主線程。主線程終止,進(jìn)程亦終止。主線程以函數(shù)地址形式(通常為 Main 或winmain 函數(shù)的地址 )被啟動(dòng)代碼提供給操作系統(tǒng)。另外,可以根據(jù)需要?jiǎng)?chuàng)建其它線程,每個(gè)線程都共享創(chuàng)建它們進(jìn)程的內(nèi)存空間,全部變量和系統(tǒng)資源。在 .NET Framework 中用來(lái)創(chuàng)建和維護(hù)線程的基類是 .Thread 類。它能夠創(chuàng)建并控制線程,設(shè)置其優(yōu)先級(jí)并獲取其狀態(tài)。擁有 Start, Stop, Resume, Abort, Suspend和 Join(waitfor)等方法操縱線程。 還可以通過(guò)如 Sleep, IsAlive, IsBackground,Priority, A partmentState 和 ThreadState 等方法查詢和設(shè)置線程狀態(tài)。1.創(chuàng)建線程 創(chuàng)建線程非常容易,最簡(jiǎn)單直接的方法是創(chuàng)建一個(gè)新的 Thread 對(duì)象,然后傳遞給它的一個(gè)委托,也就是指向某類方法的一個(gè)引用就啟動(dòng)了這個(gè)線程。代碼如下:Dim t As New Thread(AddressOf ThreadProc) ()2.掛起線程() 開發(fā)平臺(tái)Visual Basic 2022Microsoft Visual Basic 2022 從 Visual Basic 語(yǔ)言演變而來(lái),是一種為高效地生成類型安全和面向?qū)ο蟮膽?yīng)用程序而設(shè)計(jì)的語(yǔ)言。與所有面向 Microsoft .NET Framework 的語(yǔ)言一樣,使用 Visual Basic 編寫的程序都具有安全性和語(yǔ)言互操作性方面的優(yōu)點(diǎn)。它延續(xù)了基于 .NET Framework 的應(yīng)用程序的傳統(tǒng)。并恢復(fù)了對(duì)“編輯并繼續(xù)”的支持,并具有可快速開發(fā)應(yīng)用程序的新功能。其中一種稱為 My 的功能提供了對(duì)以下內(nèi)容的快速訪問(wèn):由 .NET Framework 提供的常見任務(wù),與應(yīng)用程序及其運(yùn)行時(shí)環(huán)境相關(guān)的信息和默認(rèn)對(duì)象實(shí)例。新的語(yǔ)言功能包括循環(huán)繼續(xù)、有保證的資源處置、運(yùn)算符重載、泛型類型和自定義事件。Visual Basic 與 .NET Framework 和公共語(yǔ)言運(yùn)行庫(kù) (CLR) 完全集成,它們提供了語(yǔ)言互操作、垃圾回收、增強(qiáng)的安全性和版本管理支持。第三章 面向?qū)ο蟪绦蛟O(shè)計(jì)方法 面向?qū)ο笏枷朊嫦驅(qū)ο?ObjectOriented)技術(shù)是目前流行的軟件設(shè)計(jì)開發(fā)技術(shù),包括面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)兩個(gè)方面的內(nèi)容。面向?qū)ο蠹夹g(shù)以其獨(dú)特的抽象性、封裝性、繼承性和多態(tài)性為軟件開發(fā)帶來(lái)了一場(chǎng)變革,與以前的結(jié)構(gòu)化技術(shù)相比,它具有高效率的軟件開發(fā),高可靠的軟件運(yùn)行,方便的調(diào)試、維護(hù)和擴(kuò)充等優(yōu)點(diǎn)。面向?qū)ο蟪绦蛟O(shè)計(jì)的特征可以概括為以下幾個(gè)方面:第一,抽象性。抽象是人們認(rèn)識(shí)客觀世界的復(fù)雜性的一種基本方法。抽象是事物或現(xiàn)象的簡(jiǎn)單描述,突出事物或現(xiàn)象之間的共性,而暫時(shí)不考慮它們之間的差別。抽象分為兩個(gè)方面:一是過(guò)程抽象,二是數(shù)據(jù)抽象。抽象性按照人類的通常思維來(lái)描述問(wèn)題,可以把大問(wèn)題分解成小問(wèn)題,小問(wèn)題又可以分解成更小的問(wèn)題來(lái)解決。每個(gè)小問(wèn)題都可以是一個(gè)獨(dú)立的模塊,這種思維的方式非常有利于復(fù)雜問(wèn)題的解決。第二,封裝性。對(duì)象是屬性數(shù)據(jù)和對(duì)屬性數(shù)據(jù)進(jìn)行操作的集合體。而“封裝”把這些數(shù)據(jù)和操作屏蔽起來(lái),使用戶不必知道對(duì)象行為的實(shí)現(xiàn)細(xì)節(jié),只需要根據(jù)對(duì)象提供的外部特性接口訪問(wèn)對(duì)象即可。封裝性保證了模塊具有較好的獨(dú)立性,對(duì)應(yīng)用軟件的修改僅限于“類”的內(nèi)部,使得軟件的維護(hù)修改較為容易,并且將這些改動(dòng)所帶來(lái)的影響減少到最低限度,大大提高了軟件開發(fā)的效率和軟件的可靠性。第三,繼承性。繼承性是一種表示對(duì)象之間相似性的機(jī)制,它使得某類對(duì)象可以有另一類對(duì)象的特征和行為。不需要對(duì)原有的“類”進(jìn)行任何修改,或是只需要添加一些新的成員,便可以得到新的類。這樣,可以把已有的模塊作為軟件的可重用資源,大大提高了軟件的開發(fā)效率。第四,多態(tài)性。不同對(duì)象接收到相同的消息時(shí),會(huì)產(chǎn)生不同的動(dòng)作。所以,當(dāng)實(shí)際情況發(fā)生變化時(shí),比如一個(gè)對(duì)象接收一個(gè)消息后的動(dòng)作要發(fā)生變化時(shí),我們只需要改變這個(gè)動(dòng)作實(shí)現(xiàn)即可,其它各個(gè)地方都不需要做出任何的改變。因而這種軟件具有良好的穩(wěn)定性,以不變應(yīng)萬(wàn)變的靈活性,可以大大減少維護(hù)的費(fèi)用。Visual Basic 2022 作為一種面向?qū)ο蟮某绦蜷_發(fā)工具。它的 三大支柱技術(shù):封裝性、繼承性和多態(tài)性,充分體現(xiàn)了面向?qū)ο笏枷氲木?。整個(gè)系統(tǒng)的開發(fā),就
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1