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

正文內(nèi)容

基于socket的網(wǎng)絡(luò)編程技術(shù)及其實現(xiàn)學(xué)士學(xué)位論文(編輯修改稿)

2024-07-15 16:56 本頁面
 

【文章內(nèi)容簡介】 中不同的函數(shù)來配置一個Socket。每個Socket需要五種信息:本地和遠(yuǎn)地本機(jī)的IP地址、本地和遠(yuǎn)地進(jìn)程的協(xié)議端口、連接使用的協(xié)議。面向連接的協(xié)議在連接端點(diǎn)之間建立一條虛電路,面向連接的客戶程序不必關(guān)心網(wǎng)絡(luò)軟件使用怎樣的本地地址傳輸數(shù)據(jù)。建立好連接后,客戶程序依靠TCP協(xié)議給它傳送數(shù)據(jù)。因此面向連接的客戶程序不需指明本地協(xié)議端口,它提供給Socket的唯一地址信息是遠(yuǎn)地服務(wù)器信息(IP地址和協(xié)議端口)。Winsock自動保存本地IP地址和選擇本地協(xié)議端口,并確??蛻舫绦蚴盏絺鬏攲铀徒o本地協(xié)議端口的所有數(shù)據(jù)。也就是說,Winsock為程序選擇協(xié)議端口,當(dāng)數(shù)據(jù)到達(dá)此端口時通知程序,程序不必關(guān)心Winsock使用哪一個協(xié)議端口。在前一步已建立的Socket基礎(chǔ)上,面向連接的客戶程序使用connect函數(shù)來配置Socket。result=connect(“Socket句柄”,“遠(yuǎn)地Socket地址”,“遠(yuǎn)地Socket地址長度”);此時,內(nèi)部數(shù)據(jù)結(jié)構(gòu)就包含了網(wǎng)絡(luò)通信必須的五種信息。只有面向連接的客戶進(jìn)程才啟動與遠(yuǎn)地服務(wù)器Socket的直接連接。無連接協(xié)議不建立與遠(yuǎn)地服務(wù)器的直接連接。使用無連接協(xié)議的客戶程序必須發(fā)送一個帶有服務(wù)請求的數(shù)據(jù)報并等待應(yīng)答,遠(yuǎn)地服務(wù)器的應(yīng)答以數(shù)據(jù)報的形式到達(dá)。Winsock用bind函數(shù)給Socket指定一個本地IP地址和一個協(xié)議端口,其典型調(diào)用如下:result=bind(“Socket句柄”,“本地Socket地址”,“本地Socket地址長度”);服務(wù)器程序使用bind函數(shù)用Winsock登記一個協(xié)議端口,程序告訴Winsock監(jiān)視哪一個協(xié)議端口的數(shù)據(jù)傳送,Winsock接著告訴傳輸層將此協(xié)議端口收到的數(shù)據(jù)傳送給Winsock。使用Socket使用Socket之前必須調(diào)用WSAStartup函數(shù)。該函數(shù)的第一個參數(shù)指明程序請求使用的Socket版本,其中高位字節(jié)指明副版本、低位字節(jié)指明主版本;操作系統(tǒng)利用第二個參數(shù)返回請求的Socket的版本信息。當(dāng)一個應(yīng)用程序調(diào)用WSAStartup函數(shù)時,操作系統(tǒng)根據(jù)請求的Socket版本來搜索相應(yīng)的Socket庫,然后綁定找到的Socket庫到該應(yīng)用程序中。以后應(yīng)用程序就可以調(diào)用所請求的Socket庫中的其它Socket函數(shù)了。該函數(shù)執(zhí)行成功后返回0。應(yīng)用程序在完成對請求的Socket庫的使用后,要調(diào)用WSACleanup函數(shù)來解除與Socket庫的綁定并且釋放Socket庫所占用的系統(tǒng)資源。Closesocket函數(shù)用來關(guān)閉一個描述符為s套接字。由于每個進(jìn)程中都有一個套接字描述符表,表中的每個套接字描述符都對應(yīng)了一個位于操作系統(tǒng)緩沖區(qū)中的套接字?jǐn)?shù)據(jù)結(jié)構(gòu),因此有可能有幾個套接字描述符指向同一個套接字?jǐn)?shù)據(jù)結(jié)構(gòu)。套接字?jǐn)?shù)據(jù)結(jié)構(gòu)中專門有一個字段存放該結(jié)構(gòu)的被引用次數(shù),即有多少個套接字描述符指向該結(jié)構(gòu)。當(dāng)調(diào)用closesocket函數(shù)時,操作系統(tǒng)先檢查套接字?jǐn)?shù)據(jù)結(jié)構(gòu)中的該字段的值,如果為1,就表明只有一個套接字描述符指向它,因此操作系統(tǒng)就先把s在套接字描述符表中對應(yīng)的那條表項清除,并且釋放s對應(yīng)的套接字?jǐn)?shù)據(jù)結(jié)構(gòu);如果該字段大于1,那么操作系統(tǒng)僅僅清除s在套接字描述符表中的對應(yīng)表項,并且把s對應(yīng)的套接字?jǐn)?shù)據(jù)結(jié)構(gòu)的引用次數(shù)減1。Closesocket函數(shù)如果執(zhí)行成功就返回0,否則返回SOCKET_ERROR。服務(wù)程序可以調(diào)用listen函數(shù)使其流套接字s處于監(jiān)聽狀態(tài)。處于監(jiān)聽狀態(tài)的流套接字s將維護(hù)一個客戶連接請求隊列,該隊列最多容納backlog個客戶連接請求。假如該函數(shù)執(zhí)行成功,則返回0;如果執(zhí)行失敗,則返回SOCKET_ERROR。服務(wù)程序調(diào)用accept函數(shù)從處于監(jiān)聽狀態(tài)的流套接字s的客戶連接請求隊列中取出排在最前的一個客戶請求,并且創(chuàng)建一個新的套接字來與客戶套接字創(chuàng)建連接通道,如果連接成功,就返回新創(chuàng)建的套接字的描述符,以后與客戶套接字交換數(shù)據(jù)的是新創(chuàng)建的套接字;如果失敗就返回INVALID_SOCKET。該函數(shù)的第一個參數(shù)指定處于監(jiān)聽狀態(tài)的流套接字;操作系統(tǒng)利用第二個參數(shù)來返回新創(chuàng)建的套接字的地址結(jié)構(gòu);操作系統(tǒng)利用第三個參數(shù)來返回新創(chuàng)建的套接字的地址結(jié)構(gòu)的長度。 圖像技術(shù)Windows系統(tǒng)不允許應(yīng)用程序直接訪問視頻存儲區(qū),而是提供了一個抽象的接口,稱作圖形設(shè)備接口(GDI)。Windows已經(jīng)提供了各種顯示卡的驅(qū)動程序,這樣我們的程序就不用關(guān)心與系統(tǒng)相連的顯示卡的類型,可以通過調(diào)用GDI函數(shù)來和硬件打交道。各種GDI函數(shù)會自動參考被稱為設(shè)備環(huán)境的數(shù)據(jù)結(jié)構(gòu)。Windows會自動將設(shè)備環(huán)境結(jié)構(gòu)映射到相應(yīng)的物理設(shè)備,并且提供正確的輸入輸出指令,GDI在處理速度上幾乎和直接進(jìn)行視頻訪問一樣快。BMP圖形文件是Windows采用的圖形文件格式,在Windows環(huán)境下運(yùn)行的所有圖像處理軟件都支持BMP圖像文件格式。Windows系統(tǒng)內(nèi)部各圖像繪制操作都是以BMP為基礎(chǔ)的。,因此把這種BMP圖像文件格式稱為設(shè)備相關(guān)位圖(DDB)格式。Windows ,因此把這種BMP圖像文件格式稱為設(shè)備無關(guān)位圖(DIB)格式。位圖文件可看成由4個部分組成;位圖文件頭(bitmapfileheader)、位圖信息頭(bitmapinformation header)、彩色表(color table)和定義位圖的字節(jié)陣列。(1)BMP文件頭BMP文件頭數(shù)據(jù)結(jié)構(gòu)含有BMP文件的類型、文件大小和位圖起始位置等信息。其結(jié)構(gòu)定義如下:typedefstruct tagBITMAPFILEHEADER{WORD bfrype;∥位圖文件的類型,必須為BMDWORD bfSize;∥位圖文件的大小,以字節(jié)為單位WORD bIRescrvcdl;∥圖文件保留字,必須為0WORD bIReserved2;∥位圖文件保留字,必須為0DWORD bfOffBits;∥位圖數(shù)據(jù)的起始位置,以相對于位圖文件頭的偏移量表示,單位是字節(jié)}BITMAPFILEHEADER;(2)BMP位圖信息頭BMP位圖信息頭數(shù)據(jù)用于說明位圖的尺寸等信息,其結(jié)構(gòu)定義如下:typedefstruct tagBITMAPINFOHEADER{DWORD biSize;∥結(jié)構(gòu)所占用字節(jié)數(shù)LONG biWidth;∥位圖的寬度,以像素為單位LONG biHeight; ∥位圖的高度,以像素為單位WORD biplanes; ∥目標(biāo)設(shè)備的級別,必須為lWORD biBitCount;∥每個像素所需的位數(shù),必須是l(雙色),4(16色),8(256色)或24(真彩色)之一DWORD biCompression; ∥位圖壓縮類型,必須是0(不壓縮),1(BI_RLE8壓縮類型)或2(BI RLE4壓縮類型)之一DWORD biSizeImage;∥位圖的大小,以字節(jié)為單位LONG biXPelsPerMeter;∥位圖水平分辨率。每米像素數(shù)LONG biYPelsPerMeter;∥位圖垂直分辨率,每米像素數(shù)DWORD biClrUsed; ∥位圖實際使用的顏色表中的顏色數(shù)DWORD biClrImportant; ∥位圖顯示過程中重要的顏色數(shù)}BITMAPINFOHEADER;(3)調(diào)色板(顏色表)調(diào)色板用于說明位圖中的顏色,它有若干個表項,每一個表項是一個RGBQUAD類型的結(jié)構(gòu),定義一種顏色。ROBQUAD結(jié)構(gòu)的定義如下:typedefstruct tagRGBQUAD{BYTE rgbBlue; ∥藍(lán)色的亮度(值范圍為0~255)BYTE gbGreen;∥ 綠色的亮度(值范圍為0~255)BYTE rgbRed;∥紅色的亮度(值范圍為0~255)BYTE rgbReserved;∥保留,必須為0}RGBQUAD;顏色表中RGBQUAD結(jié)構(gòu)數(shù)據(jù)的個數(shù)由biBitCount來確定:●當(dāng)biBitCount=1,4,8時,分別有2,16,256個表項;●當(dāng)biBitCount=24時,沒有顏色表項。位圖信息頭和顏色表組成位圖信息,B1TMAPINFO結(jié)構(gòu)定義如下:typcdefstruct tagBITMAPINFO{BITMAPINFoHEADER bmiIIeader; ∥位圖信息頭RGBQUAD bmiColors; ∥顏色表}BITMAPINFO;(4)位圖數(shù)據(jù)位圖數(shù)據(jù)記錄了位圖的每一個像素值,記錄順序是掃描行內(nèi)從左到右,掃描行之問從下到上。位圖的一個像素值所占的字節(jié)數(shù):●當(dāng)biBitCount=1時,8個像素占1個字節(jié);●當(dāng)biBitCount=4時,2個像素占1個字節(jié);●當(dāng)biBitCount=8時,1個像素占1個字節(jié);●當(dāng)biBitCount=24時,1個像素占3個字節(jié)。Windows規(guī)定下個掃描行所占的字節(jié)數(shù)必須是4的倍數(shù)(即以long為單位),不足的以0填充。一個掃描行所占的字節(jié)數(shù)計算方法:DataSizePerLin=(biWidth*biBitCount+31)/8;∥一個掃描行所占的字節(jié)數(shù)DataSizePcrLincr=DataSizePerLine/4*4;∥字節(jié)數(shù)必須是4的倍數(shù)位圖數(shù)據(jù)的大?。ú粔嚎s情況下)DataSize=DataSizePerLine*biHeight; 圖像壓縮編碼解碼位圖原稿數(shù)字化后的數(shù)據(jù)量非常驚人,在硬盤上存儲時頗占地盤,并給傳輸帶來了很多不便,所以圖像壓縮得到了廣泛的運(yùn)用。壓縮的目的就是滿足存儲容量和傳輸帶寬的要求,而付出的代價是大量的計算。圖像數(shù)據(jù)壓縮技術(shù)總的來說就是利用圖像數(shù)據(jù)固有的冗余性和相干性,將一個大的數(shù)據(jù)文件轉(zhuǎn)換成較小的同性質(zhì)的文件。 圖像壓縮主要根據(jù)兩個基本事實來實現(xiàn)。一是圖像數(shù)據(jù)中有許多重復(fù)的數(shù)據(jù),使用數(shù)學(xué)方法來表示這些重復(fù)數(shù)據(jù)就可以減少數(shù)據(jù)量;二是人的眼睛對圖像細(xì)節(jié)和顏色的辨認(rèn)有一個極限,把超過極限的部分去掉,也就達(dá)到了壓縮數(shù)據(jù)的目的。利用前一個事實的壓縮技術(shù)就是無損壓縮技術(shù),即壓縮后的圖像數(shù)據(jù)還原后與未壓縮時嚴(yán)格相同,沒有失真,如TIFF圖像文件格式;利用后一個事實的壓縮技術(shù)就是有損壓縮技術(shù),即壓縮后的圖像數(shù)據(jù)與未壓縮時有所不同,但不影晌人們對原始資料表達(dá)的信息造成誤解,如JPEG圖像文件格式。實際的圖像壓縮其實是綜合使用各種有損和無損壓縮技術(shù)來實現(xiàn)的。采取有損壓縮的方法進(jìn)行數(shù)據(jù)壓縮,在解壓時會造成較大的誤差擴(kuò)。所以本系統(tǒng)采用的數(shù)據(jù)壓縮方式是無損壓縮。 圖像壓縮編碼對圖像采用不同的表達(dá)方式以減小表示圖像所需的數(shù)據(jù)量,所以也常稱為數(shù)據(jù)壓縮。壓縮的理論基礎(chǔ)是信息論。從信息論的角度來看,壓縮就是去掉信息中的冗余,即保留不確定的信息,去掉確定的信息(可推知的),也就是用一種更接近信息本質(zhì)的描述來代替原有冗余的描述。這個本質(zhì)的因素就是信息量(即不確定因素)。假如用n1和n2分別代表用來表達(dá)相同信息的2個數(shù)據(jù)集合中的信息載體單位的個數(shù),那么壓縮率CR為:Cr=nl/n2,一般情況下Cr在開區(qū)間(0,+∞)中取值。在數(shù)字圖像壓縮中,有3種基本的數(shù)據(jù)冗余:像素相關(guān)冗余,編碼冗余,心理視覺冗余。如果能減少或消除其中的一種或多種冗余,就能取得數(shù)據(jù)壓縮的效果。 霍夫曼壓縮霍夫曼是1952年為文本文件建立的,其基本原理是頻繁使用的數(shù)據(jù)用較短的代碼代替,很少使用的數(shù)據(jù)用較長的代碼代替,每個數(shù)據(jù)的代碼各不相同。這些代碼都是二進(jìn)制碼,且碼的長度是可變的。如: 有一個原始數(shù)據(jù)序列,ABACCDAA則編碼為A(0),B(10),C(110), D(111),壓縮后為010011011011100。產(chǎn)生霍夫曼編碼需要對原始數(shù)據(jù)掃描兩遍,第一遍掃描要精確地統(tǒng)計出原始數(shù)據(jù)中的每個值出現(xiàn)的頻率,第二遍是建立霍夫曼樹并進(jìn)行編碼,由于需要建立二叉樹并遍歷二叉樹生成編碼,因此數(shù)據(jù)壓縮和還原速度都較慢,但簡單有效,因而得到廣泛的應(yīng)用。哈夫曼編碼是無損壓縮當(dāng)中最好的方法。它使用預(yù)先二進(jìn)制描述來替換每個符號,長度由特殊符號出現(xiàn)的頻率決定。常見的符號需要很少的位來表示,而不常見的符號需要很多為來表示。哈夫曼算法在改變?nèi)魏畏柖M(jìn)制編碼引起少量密集表現(xiàn)方面是最佳的,然而,它并不處理符號的順序和重復(fù)或序號的序列。 Run Length壓縮原理是將一掃描行中的顏色值相同的相鄰像素用一個計數(shù)值和那些像素的顏色值來代替。例如:aaabccccccddeee,則可用3a1b6c2d3e來代替。對于擁有大面積,相同顏色區(qū)域的圖像,用RLE壓縮方法非常有效。由RLE原理派生出許多具體行程壓縮方法:(1)PCX行程壓縮方法: 該算法實際上是位映射格式到壓縮格式的轉(zhuǎn)換算法,該算法對于連續(xù)出現(xiàn)1次的字節(jié)Ch,若Ch0xc0則壓縮時在該字節(jié)前加上0xc1,否則直接輸出Ch,對于連續(xù)出現(xiàn)N 次的字節(jié)Ch,則壓縮成0xc0+N,Ch這兩個字節(jié),因而N最大只能為ff-c0=3fh(十進(jìn)制為63),當(dāng)N大于63時, 則需分多次壓縮。(2)BI_RLE8壓縮方法:在Windows的位圖文件中采用了這種壓縮方法。該壓縮方法編碼也是以兩個字節(jié)為基本單位。其中第一個字節(jié)規(guī)定了用第二個字節(jié)指定的顏色重復(fù)次數(shù)。如編碼 0504表示從當(dāng)前位置開始連續(xù)顯示5個顏色值為04的像素。當(dāng)?shù)诙€字節(jié)為零時第二個字節(jié)有特殊含義:0表示行末;1表示圖末;2轉(zhuǎn)義后面2個字節(jié), 這兩個字節(jié)分別表示下一像素相對于當(dāng)前位置的水平位移和垂直位移。這種壓縮方法所能壓縮的圖像像素位數(shù)最大為8位(256色)圖像。(3)BI_RLE壓縮方法:該方法也用于Windows位圖文件中,它與 BI_RLE8編碼類似,唯一不同是:BI_RLE4的一個字節(jié)包含了兩個像素的顏色,因此,它只能壓縮的顏色數(shù)不超過16的圖像。因而這種壓縮應(yīng)用范圍有限。(4)緊縮位壓縮方法(Packbits):該方法是用于Apple公司的Macintosh機(jī)上的位圖數(shù)據(jù)壓縮方法,TIFF 規(guī)范中使用了這種方法,這種壓縮方法與BI_RLE8壓縮方法相似,如1c1c1c2132325648 壓縮為:83 1c 21 81 32 56 48,顯而易見,這種壓縮方法最好情況是每連續(xù)128個字節(jié)相同,這128個字節(jié)可壓縮為一個數(shù)值7f。這種方法還是非常
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1