




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Windows網(wǎng)絡(luò)編程技術(shù)
第一章Windows網(wǎng)絡(luò)編程基礎(chǔ)授課老師:胡鳴本章提綱1.1Windows網(wǎng)絡(luò)應(yīng)用1.1.1常用的網(wǎng)絡(luò)應(yīng)用實(shí)例1.1.2網(wǎng)絡(luò)應(yīng)用的特點(diǎn)與運(yùn)行環(huán)境1.1.3網(wǎng)絡(luò)應(yīng)用前景1.2Windows環(huán)境下的應(yīng)用程序1.2.1應(yīng)用程序的形態(tài)1.2.2應(yīng)用程序的運(yùn)行環(huán)境1.2.3應(yīng)用程序的開發(fā)環(huán)境1.3Windows環(huán)境下的網(wǎng)絡(luò)應(yīng)用程序1.3.1網(wǎng)絡(luò)應(yīng)用程序的開發(fā)支持1.3.2網(wǎng)絡(luò)應(yīng)用程序的運(yùn)行環(huán)境的問題1.3.3網(wǎng)絡(luò)應(yīng)用程序的應(yīng)用模型1.1.1常用的網(wǎng)絡(luò)應(yīng)用實(shí)例萬維網(wǎng)WWW服務(wù)Windows系統(tǒng)下的IE瀏覽器(用于客戶端)電子郵件服務(wù)(Outlook和Foxmail)文件傳輸服務(wù)(Windows的FTP和其他)個(gè)人聊天服務(wù)(個(gè)人即時(shí)通,QQ,MSN等)網(wǎng)絡(luò)游戲服務(wù)(各種網(wǎng)絡(luò)版的游戲)網(wǎng)絡(luò)安全服務(wù)(各種殺毒軟件和防火墻軟件)1.1.2網(wǎng)絡(luò)應(yīng)用的特點(diǎn)與運(yùn)行環(huán)境網(wǎng)絡(luò)服務(wù)至少需要兩臺(tái)以上計(jì)算機(jī)運(yùn)行應(yīng)用進(jìn)程通信的支持;每臺(tái)計(jì)算機(jī)運(yùn)行的網(wǎng)絡(luò)應(yīng)用進(jìn)程與該機(jī)器上的其它應(yīng)用進(jìn)程共享所在機(jī)器上的系統(tǒng)資源;網(wǎng)絡(luò)應(yīng)用進(jìn)程之間的通信由標(biāo)準(zhǔn)化的I/O接口(網(wǎng)卡或內(nèi)/外置modem,視本地網(wǎng)絡(luò)不同而不同)以及連接雙方網(wǎng)絡(luò)硬件資源的支持;網(wǎng)絡(luò)應(yīng)用進(jìn)程的通信,需要區(qū)分不同的機(jī)器以及區(qū)分同一機(jī)器上不同的網(wǎng)絡(luò)應(yīng)用進(jìn)程和網(wǎng)絡(luò)服務(wù)功能需要網(wǎng)絡(luò)尋址和數(shù)據(jù)轉(zhuǎn)發(fā)機(jī)制,它們由參入通信的計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議軟件(如TCP/IP協(xié)議族)的支持;實(shí)現(xiàn)廣泛的功能擴(kuò)展,即具有虛擬設(shè)備(把網(wǎng)絡(luò)上任何一臺(tái)其它計(jì)算機(jī)看作為使用接口計(jì)算機(jī)的設(shè)備)功能,需要網(wǎng)絡(luò)通信的進(jìn)程能夠正確解析對(duì)方的信息,因此它們必須建立標(biāo)準(zhǔn)的通信規(guī)范。網(wǎng)絡(luò)應(yīng)用程序的網(wǎng)絡(luò)環(huán)境網(wǎng)絡(luò)應(yīng)用程序運(yùn)行的協(xié)議棧
網(wǎng)絡(luò)應(yīng)用程序數(shù)據(jù)流的傳輸模型
網(wǎng)絡(luò)應(yīng)用程序運(yùn)行的網(wǎng)絡(luò)配置
1.1.3網(wǎng)絡(luò)應(yīng)用前景目前的現(xiàn)狀(廣泛流行而成熟的TCP/IP協(xié)議族
和各種網(wǎng)絡(luò)應(yīng)用程序的存在)網(wǎng)絡(luò)應(yīng)用程序的市場(chǎng)并未飽和、網(wǎng)絡(luò)應(yīng)用程序的功能還處在通用化階段、現(xiàn)有的網(wǎng)絡(luò)應(yīng)用程序需要逐步完善各種網(wǎng)絡(luò)專業(yè)化的市場(chǎng)仍然期待著進(jìn)一步的網(wǎng)絡(luò)應(yīng)用項(xiàng)目的開發(fā),如電子商務(wù)和政務(wù)的需求、教育游戲的需求網(wǎng)絡(luò)基礎(chǔ)設(shè)施本身需要進(jìn)一步完善,如IPv6。信息時(shí)代信息化(提取信息)、數(shù)字化(傳輸)和網(wǎng)絡(luò)化(分布與共享)需求增大,各種網(wǎng)絡(luò)應(yīng)用程序逐步走向個(gè)性化、智能化和綜合化
1.2.1應(yīng)用程序的形態(tài)在操作系統(tǒng)中,應(yīng)用程序可執(zhí)行的代碼最終被裝入內(nèi)存執(zhí)行之前是以文件的方式存放在磁盤中的,也就是以可執(zhí)行文件的方式。在DOS中出現(xiàn)的是以.com和以.exe為擴(kuò)展名的可執(zhí)行文件
在VC++的VC98\Include目錄里的WINNT.h文件中四種EXE可執(zhí)行文件格式
PE文件結(jié)構(gòu)總體層次分布可執(zhí)行文件裝在到內(nèi)存中才有可能被執(zhí)行,從靜態(tài)的文件變成動(dòng)態(tài)的進(jìn)程,由Windows裝載器完成。要保證可執(zhí)行文件在內(nèi)存中運(yùn)行需要解決cpu處理數(shù)據(jù)的字節(jié)順序(little
endian和big
endian
)和內(nèi)存地址映射(文件地址、虛擬地址VA和相對(duì)虛擬地址RVA
)兩個(gè)問題。通過不同格式的CPU的處理,文件的數(shù)據(jù)在磁盤上存儲(chǔ)順序是不同的,如bmp,gif文件采用little
endian格式而jpeg文件采用big
endian格式。
兩種字節(jié)順序比較AA+1A+3存貯A+2AA+1A+3存貯A+2Big-Endian字節(jié)順序IBM和Motorola計(jì)算機(jī)采用,而TCP/IP協(xié)議族也采用作為網(wǎng)絡(luò)字節(jié)順序Little-Endian字節(jié)順序DECVAX和Intelx86都是基于Little-Endian字節(jié)順序內(nèi)存地址映射文件地址對(duì)應(yīng)某個(gè)結(jié)構(gòu)的偏移,比如用十六進(jìn)制編輯器打開PE文件,看到的就是文件地址。虛擬地址就是程序中使用的地址,通常使用段地址:偏移量,不過32位系統(tǒng)使用單層(flat)內(nèi)存模式,只需要考慮32位的偏移量232=4G,類似絕對(duì)路徑。相對(duì)虛擬地址RVA是一個(gè)簡(jiǎn)單的相對(duì)于PE載入點(diǎn)(hModule)的內(nèi)存偏移,PE文件中許多字段都是用RVA表示的,它為數(shù)據(jù)項(xiàng)的offset(偏移量)-從文件被映像進(jìn)來的起點(diǎn)(基址),類似于相對(duì)路徑。裝載PE格式可執(zhí)行文件的主要步驟PE文件被執(zhí)行時(shí),PE裝載器檢查DOSMZheader里的PEheader偏移量。對(duì)不支持的格式,運(yùn)行DOSStub程序提示用戶。如果找到,則跳轉(zhuǎn)到PEheader。PE裝載器檢查PEheader的有效性。如果有效,就跳轉(zhuǎn)到PEheader的尾部。緊跟PEheader的是段表。PE裝載器遍歷整個(gè)段表,分配4GB的進(jìn)程虛擬地址空間,將每個(gè)段加載到這個(gè)進(jìn)程空間,讀取其中的段信息,并采用文件映射方法將段映射到內(nèi)存(磁盤與內(nèi)存頁交換,每頁大小在x-86CPU上為4k,需要的頁放入內(nèi)存,不再需要的回到磁盤),同時(shí)附上段表里指定的屬性。PE裝載器在內(nèi)核中創(chuàng)建進(jìn)程對(duì)象,如果有多線程則創(chuàng)建主線程對(duì)象以及其他內(nèi)容;PE裝載器搜索PE文件中的引入表(importtable)裝載應(yīng)用程序需要的動(dòng)態(tài)鏈接庫(kù)DLL(DynamicLinkLibrary)。對(duì)動(dòng)態(tài)鏈接庫(kù)的裝載和對(duì)應(yīng)用程序的裝載方法類似;PE裝載器指向內(nèi)存中PE文件首部所指定地址處的代碼,應(yīng)用程序主線程準(zhǔn)備執(zhí)行。軟件安裝問題文件從安裝源位置拷貝到目標(biāo)位置(以word為例)。在系統(tǒng)目錄中寫入一些必要的動(dòng)態(tài)連接庫(kù)(DLL)。(可選)在系統(tǒng)注冊(cè)表中寫入相應(yīng)的設(shè)置項(xiàng)。(可選)建立開始菜單里的程序組和桌面快捷方式。(可選)其他動(dòng)作。(可選)驅(qū)動(dòng)程序,只會(huì)執(zhí)行2和3。可以在DOS環(huán)境下運(yùn)行注冊(cè)表編輯器(regedit.exe)查看注冊(cè)表信息。有專門制作軟件,例如WindowsInstaller,為你開發(fā)的軟件構(gòu)建并配置合適的安裝軟件如setup.exe。1.2.2應(yīng)用程序的運(yùn)行環(huán)境應(yīng)用程序的基本處理:應(yīng)用軟件的打包——〉系統(tǒng)可用的軟件——〉應(yīng)用進(jìn)程兩個(gè)箭頭代表兩個(gè)轉(zhuǎn)換:軟件的安裝(系統(tǒng)注冊(cè))和應(yīng)用程序的裝載進(jìn)程需要的三個(gè)資源:CPU、內(nèi)存和外存(存放可執(zhí)行文件,每次讀入內(nèi)存不是全部文件,而按需要以頁為單位讀入/讀出內(nèi)存
)進(jìn)程的三個(gè)狀態(tài):就緒(在內(nèi)存中準(zhǔn)備執(zhí)行)、運(yùn)行(在CPU上執(zhí)行指令)和阻塞(程序在外存上,或者程序需要的資源不足)。
內(nèi)核管理進(jìn)程資源和狀態(tài)操作系統(tǒng)劃分兩種工作狀態(tài):用戶態(tài)與核心態(tài)應(yīng)用程序進(jìn)入系統(tǒng)運(yùn)行的過程
Windows運(yùn)行環(huán)境用戶態(tài)組件系統(tǒng)支持進(jìn)程(systemsupportprocess),例如服務(wù)管理器,Windows登錄、本地安全驗(yàn)證服務(wù)和會(huì)話管理器。服務(wù)進(jìn)程(serviceprocess),Windows2000/XP的服務(wù),例如services.exe(管理Windows服務(wù)),spool32.exe(Windows打印任務(wù)控制程序,用以打印機(jī)就緒),svchost.exe(ServiceHostProcess是一個(gè)標(biāo)準(zhǔn)的動(dòng)態(tài)連接庫(kù)主機(jī)處理服務(wù)),winmgmt.exe(提供系統(tǒng)管理信息)等。環(huán)境子系統(tǒng)(environmentsubsystems),它們向應(yīng)用程序提供操作系統(tǒng)功能調(diào)用接口包括:Win32、POSIX和OS/21.2。不同的應(yīng)用程序與支持它環(huán)境子系統(tǒng)有關(guān),但最終由Win32子系統(tǒng)支持。五種類型應(yīng)用程序(userapplications):Win32、Windows3.1、MS-DOS、POSIX或OS/21.2。如Windows瀏覽器、任務(wù)管理器和許多用戶級(jí)應(yīng)用程序。子系統(tǒng)動(dòng)態(tài)鏈接庫(kù)Ntdll.dll:調(diào)用層轉(zhuǎn)換和映射。核心態(tài)組件核心包含了最低級(jí)的操作系統(tǒng)功能,例如線程調(diào)度、中斷和異常調(diào)度、多處理器同步等。同時(shí)它也提供了執(zhí)行體(Executive)用來實(shí)現(xiàn)高級(jí)結(jié)構(gòu)的一組例程和基本對(duì)象。執(zhí)行體包含基本的操作系統(tǒng)服務(wù),例如對(duì)象管理、安全控制(調(diào)用監(jiān)視)、虛擬內(nèi)存管理、進(jìn)程和線程管理、本地過程調(diào)用、I/O以及進(jìn)程間的通信。I/O管理程序包括文件系統(tǒng)、緩沖存儲(chǔ)管理程序和硬件設(shè)備驅(qū)動(dòng)程序(DeviceDrivers將用戶的I/O函數(shù)調(diào)用轉(zhuǎn)換為對(duì)特定硬件設(shè)備的I/O請(qǐng)求)等。WindowsNT線程的調(diào)度狀態(tài)及其轉(zhuǎn)換圖形引擎即窗口和圖形系統(tǒng),包含了實(shí)現(xiàn)圖形用戶界面(GUI,GraphicalUserInterface)的基本函數(shù)。硬件抽象層(HAL,HardwareAbstractionLayer)將內(nèi)核、設(shè)備驅(qū)動(dòng)程序以及執(zhí)行體同硬件分隔開來,實(shí)現(xiàn)硬件映射。
1.2.3應(yīng)用程序的開發(fā)環(huán)境開發(fā)環(huán)境中首先要放入的是應(yīng)用程序源代碼。源代碼部分一般有兩種:C/C++的標(biāo)準(zhǔn)部分(庫(kù)函數(shù))和平臺(tái)依賴部分(包括系統(tǒng)調(diào)用和系統(tǒng)調(diào)用的擴(kuò)展);標(biāo)準(zhǔn)C/C++部分實(shí)例#include<math.h>#include<stdio.h>voidmain(){//基本變量的定義
longinti,n;doublex;longdoublesum,t,d,s;printf("Pleaseenteraninteger:");scanf("%ld",&n);printf("\n");//從控制臺(tái)接收一個(gè)長(zhǎng)整數(shù)n。while(n>1){sum=0;s=0;//下一步要進(jìn)入內(nèi)循環(huán)運(yùn)算for(i=1;i<=n;i++){t=i*(2*n-i);d=sqrtl(t);t=(d-s)*(d-s)+1;sum=sum+sqrtl(t);s=d;}//從內(nèi)循環(huán)中跳出進(jìn)入外循環(huán)部分x=2*sum/n;printf("thevalueis%1.9f\n",x);printf("Pleaseenterthenextinteger(0forquiting):");scanf("%ld",&n);printf("\n");}}Windows系統(tǒng)調(diào)用原理幾乎每個(gè)資源都是用“對(duì)象”識(shí)別的并且用類型為“HANDLE”的句柄引用。內(nèi)核對(duì)象必須是由WindowsAPI操作的,“HANDLE”數(shù)據(jù)類型對(duì)象包括,文件、進(jìn)程、線程、管道、內(nèi)存映射、事件、互斥信號(hào)、信號(hào)量。Windows是豐富并且靈活的許多函數(shù)完成同樣的和類似的功能每個(gè)函數(shù)有多個(gè)參數(shù)和標(biāo)志W(wǎng)indows線程是基本的執(zhí)行單位,而不是進(jìn)程進(jìn)程包括一個(gè)或多個(gè)線程每個(gè)進(jìn)程有自己的代碼和數(shù)據(jù)的地址空間線程比進(jìn)程“輕量級(jí)”的、更有效的用于服務(wù)器、異步I/O等Windows系統(tǒng)調(diào)用變量命名習(xí)慣長(zhǎng)并且是描述型的WaitForSingleObject
WaitForMultipleObjects預(yù)定義描述性的數(shù)據(jù)類型用大寫字母BOOL,DWORD,LPDWORD,...預(yù)定義避免*帶區(qū)別的數(shù)據(jù)類型定義LPTSTR(definedasTCHAR*)andLPCTSTR(definedasconstTCHAR*)在API中的變量名用“葡萄牙”記號(hào)法lp—長(zhǎng)整數(shù)指針[指向帶終止的字符串]Windows系統(tǒng)調(diào)用編程習(xí)慣<Windows.h>總是作為包含文件。所有由“HANDLE”類型變量識(shí)別的對(duì)象CloseHandle
函數(shù)幾乎可以用到所有的對(duì)象符號(hào)常量和標(biāo)志可以解釋其意義INVALID_HANDLE_VALUE
和GENERIC_READReadFile,WriteFile,和許多其他Windows函數(shù)返回布爾類型Boolean值系統(tǒng)錯(cuò)誤代碼通過函數(shù)GetLastError()得到C庫(kù)總是可用的但你不能全部用它來開發(fā)Windows系統(tǒng)調(diào)用實(shí)例:Windows文件復(fù)制/*基本的文件復(fù)制程序cpW.c *//*cpWfile1file2:復(fù)制file1到file2 */#include<windows.h>/*對(duì)Windows總是要求的*/#include<stdio.h>#defineBUF_SIZE256/*對(duì)快速?gòu)?fù)制的增量*/intmain(intargc,LPTSTRargv[]){ HANDLEhIn,hOut;/*輸入輸出句柄*/ DWORDnIn,nOut;/*傳輸?shù)淖止?jié)數(shù)*/ CHARBuffer[BUF_SIZE]; if(argc!=3){ printf(“用法:cpWfile1file2\n"); return1; }/*為讀寫創(chuàng)建句柄。許多缺省值被用*/hIn=CreateFile(argv[1],GENERIC_READ,0,NULL, OPEN_EXISTING,,NULL); if(hIn==INVALID_HANDLE_VALUE){ printf(“不能打開輸入文件\n"); return2; }hOut=CreateFile(argv[2],GENERIC_WRITE,0,NULL, CREATE_ALWAYS,,NULL); if(hOut==INVALID_HANDLE_VALUE){ printf(“不能打開輸出文件\n"); return3; }/* 輸入輸出文件句柄打開,復(fù)制文件注意文件結(jié)尾檢測(cè)*/ while(ReadFile(hIn,Buffer,BUF_SIZE, &nIn,NULL)&&nIn>0) WriteFile(hOut,Buffer,nIn,&nOut,NULL);/* 回收資源,如打開的句柄*/ CloseHandle(hIn);CloseHandle(hOut); return0;}Windows平臺(tái)依賴部分可以點(diǎn)擊網(wǎng)頁,或者讀者通過光盤或網(wǎng)絡(luò)下載方式,安裝MSDN技術(shù)資源庫(kù)。標(biāo)準(zhǔn)庫(kù)函數(shù)與系統(tǒng)調(diào)用的關(guān)系。例如,熟悉的庫(kù)函數(shù)printf()提供數(shù)據(jù)的格式處理和緩沖而且最終調(diào)用WriteFile()寫數(shù)據(jù)到控制臺(tái)上顯示。fopen()(屬于POSIX子系統(tǒng))除了轉(zhuǎn)換為系統(tǒng)調(diào)用CreateFile()(屬于Win32子系統(tǒng))并實(shí)現(xiàn)之外,別的事情不做。還有其它的C語言庫(kù)函數(shù),例如strcpy(),一點(diǎn)也沒有利用內(nèi)核。應(yīng)用程序通過系統(tǒng)調(diào)用打開一個(gè)文件對(duì)象
同步I/O操作異步I/O操作
開發(fā)環(huán)境的介紹在Windows環(huán)境下,微軟有專門的應(yīng)用程序開發(fā)環(huán)境MicrosoftVisualStudio(本書采用VC++部分),來完成高級(jí)語言的代碼編輯、編譯、鏈接最后產(chǎn)生可執(zhí)行文件。經(jīng)過安裝處理為打包的文件夾。應(yīng)用程序向?qū)ppWizard
開發(fā)環(huán)境的構(gòu)成提供一系列特定工程類型和選項(xiàng)對(duì)話框,引導(dǎo)用戶進(jìn)行必要的選擇,來完成給定的任務(wù)。根據(jù)用戶所填充的對(duì)話框,AppWizard會(huì)自動(dòng)創(chuàng)建構(gòu)造工程所需的框架文件,它們包括:工程文件.dsp、工作區(qū)文件.dsw、源代碼文件.cpp、頭文件.h、資源文件.rc等等。VisualStudio開發(fā)環(huán)境中/VC98文件夾主要有五個(gè)子目錄:ATL(ActiveXTemplateLibrary為C++的ActiveX控件模版庫(kù)),Bin(開發(fā)環(huán)境提供編輯、編譯、鏈接和調(diào)試器的可執(zhí)行文件),Include(編輯時(shí)編譯包含文件),Lib(連接時(shí)需要的庫(kù)文件)和MFC(MicrosoftFoundationClass基于MFC的包含文件、庫(kù)文件和類文件)。1.3.1網(wǎng)絡(luò)應(yīng)用程序的開發(fā)支持Windows提供的編程接口在內(nèi)核之內(nèi)微軟和3COM合作開發(fā)了NDIS(NetworkDriverInterfaceSpecification)網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范。利用這個(gè)接口(NDISLib或NDISWrapper)提供統(tǒng)一例程和調(diào)用實(shí)現(xiàn)各種驅(qū)動(dòng)程序一級(jí)的開發(fā)。所有的WindowsNT傳輸驅(qū)動(dòng)程序都通過傳輸驅(qū)動(dòng)程序接口TDI(TransportDriverInterface)為內(nèi)核模式網(wǎng)絡(luò)客戶程序提供服務(wù)。它負(fù)責(zé)接收上層的數(shù)據(jù)、打包,再調(diào)用NDIS庫(kù)函數(shù)將數(shù)據(jù)發(fā)送至下層驅(qū)動(dòng)程序。在內(nèi)核之外提供三種方式的應(yīng)用程序編程接口:NetBIOS、Sockets和直接網(wǎng)絡(luò)編程。常規(guī)的網(wǎng)絡(luò)編程接口一般無法訪問到位于底層的網(wǎng)絡(luò)協(xié)議,如NetBIOS和WinSock。直接網(wǎng)絡(luò)編程提供數(shù)據(jù)鏈路層或網(wǎng)絡(luò)層的編程方法。例如,WinPcap針對(duì)網(wǎng)絡(luò)數(shù)據(jù)包捕獲,而Libnet針對(duì)網(wǎng)絡(luò)數(shù)據(jù)包構(gòu)造的編程接口。VC++針對(duì)NetBIOS和Sockets的編程開發(fā)提供了自帶的庫(kù)文件,其中netapi32.lib用于NetBIOS,而WSOCK32.lib和WS2_32.lib用于Sockets。但對(duì)于直接網(wǎng)絡(luò)編程如WinPcap和Libnet,VC++沒有提供自帶的庫(kù)函數(shù),它們必須通過網(wǎng)絡(luò)下載。VC++開發(fā)環(huán)境中有兩種方法加入這些庫(kù):預(yù)編譯命令(如,#pragmacomment(lib,"庫(kù)文件名.lib")或通過ProjectSettingsLink的object/librarymodules一欄中增加(庫(kù)文件名.lib)1.3.2網(wǎng)絡(luò)應(yīng)用程序的運(yùn)行環(huán)境問題并發(fā)環(huán)境并發(fā)(多個(gè)任務(wù)多處理器和單個(gè)任務(wù)多分支或多任務(wù)時(shí)間共享)與遞進(jìn)(多個(gè)任務(wù)或單任務(wù)多分支按順序循環(huán)執(zhí)行);并行(單個(gè)任務(wù)多個(gè)無依賴的分支的同時(shí)計(jì)算)和順序(多個(gè)無依賴分支按順序完成計(jì)算)客戶應(yīng)用共享網(wǎng)絡(luò),網(wǎng)絡(luò)路由冗余,但操作獨(dú)立,這屬于網(wǎng)絡(luò)并發(fā)現(xiàn)象。來自不同客戶的請(qǐng)求按時(shí)間順序進(jìn)入服務(wù)器,但這些請(qǐng)求的發(fā)起時(shí)間的順序可能與進(jìn)入服務(wù)器的時(shí)間順序不同,它們可以認(rèn)為是并發(fā)的,這屬于服務(wù)器并發(fā)現(xiàn)象。按并發(fā)現(xiàn)象處理請(qǐng)求,一般采用多進(jìn)程或多線程應(yīng)用程序編程。在多進(jìn)程或多線程應(yīng)用程序中,涉及到資源共享、進(jìn)程或線程間的同步,因而要復(fù)雜得多。在多線程或多進(jìn)程應(yīng)用中,使用的系統(tǒng)調(diào)用或函數(shù)必須是可重入的。staticinttmp;voidswap1(int*x,int*y){tmp=*x;*x=*y;*y=tmp;}voidswap2(int*x,int*y){inttmp;tmp=*x;*x=*y;*y=tmp;}swap1是不可重入的,swap2是可重入的。
2、異構(gòu)環(huán)境字節(jié)順序Big-Endian和Little-Endian兩種CPU處理數(shù)據(jù)的字節(jié)順序。IBMAIX、SunOS、HPUNIX、Solaris和TCP/IP協(xié)議族網(wǎng)絡(luò)字節(jié)順序采用Big-Endian字節(jié)順序;DigitalUNIX、Linux、BSDi、SystemV4、DOS和Windows9x/2000/NT等采用Little-Endian字節(jié)順序字的長(zhǎng)度不同平臺(tái)實(shí)現(xiàn),對(duì)于相同數(shù)據(jù)類型可能有不同的表示長(zhǎng)度。例如32位和64位操作系統(tǒng)中,類型longint的長(zhǎng)度不一樣。在DigtalUNIX中的longint的長(zhǎng)度為8個(gè)字節(jié),而在Solaris中則為4個(gè)字節(jié)。
字節(jié)定界。不同的平臺(tái)結(jié)構(gòu)體(struct)和共同體(union)打包的方式(打包計(jì)量的數(shù)據(jù)單位)不同,這取決于所有數(shù)據(jù)類型的位數(shù)和機(jī)器的定界限制。例如,在很多系統(tǒng)中,結(jié)構(gòu)體struct{unsignedchara;intb}默認(rèn)的長(zhǎng)度是8(按int定界)而不是5(按字節(jié)定界),只有1字節(jié)定界時(shí)長(zhǎng)度為5。有三種解決此類問題的方法:相同字節(jié)順序時(shí),通信雙方均以單字節(jié)定界;不同字節(jié)順序時(shí),顯示定義格式(位數(shù)和字節(jié)順序類型),例如使用XDR(ExternalDataRepresentation)和MPI(MessagePacketInterface);將格式變換統(tǒng)一的格式,例如字符數(shù)組。網(wǎng)絡(luò)協(xié)議中多采用四字節(jié)定界。3、網(wǎng)絡(luò)I/O訪問機(jī)制和效率尋址方式尋址涉及底層網(wǎng)絡(luò)尋址、互聯(lián)網(wǎng)虛擬網(wǎng)絡(luò)尋址和進(jìn)程尋址問題,一般系統(tǒng)的網(wǎng)絡(luò)驅(qū)動(dòng)程序負(fù)責(zé)底層網(wǎng)絡(luò)尋址,互聯(lián)網(wǎng)虛擬地址IP(本地IP地址由系統(tǒng)配置實(shí)現(xiàn))和進(jìn)程地址尋址需要網(wǎng)絡(luò)應(yīng)用代碼實(shí)現(xiàn),當(dāng)然應(yīng)用程序可以利用命名服
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中歷史 專題四 雅爾塔體系下的冷戰(zhàn)與和平 一 戰(zhàn)后初期的世界政治形勢(shì)教學(xué)教學(xué)實(shí)錄 人民版選修3
- 某一級(jí)公路施工組織設(shè)計(jì)方案
- 2023七年級(jí)語文上冊(cè) 第六單元 21女媧造人教學(xué)實(shí)錄 新人教版
- 2025年三醋酸纖維素膜項(xiàng)目發(fā)展計(jì)劃
- 3當(dāng)沖突發(fā)生 第二課時(shí)(教學(xué)設(shè)計(jì))-2023-2024學(xué)年道德與法治四年級(jí)下冊(cè)統(tǒng)編版
- 2025年超低頻綜合參數(shù)測(cè)試儀合作協(xié)議書
- 5 健康游戲我常玩(教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版道德與法治二年級(jí)上冊(cè)
- 2024-2025學(xué)年高中化學(xué)上學(xué)期第9周教學(xué)實(shí)錄(醛)
- 4夜書所見教學(xué)設(shè)計(jì)-2024-2025學(xué)年三年級(jí)上冊(cè)語文統(tǒng)編版
- 2023九年級(jí)數(shù)學(xué)上冊(cè) 第二十一章 一元二次方程21.1 一元二次方程教學(xué)實(shí)錄(新版)新人教版
- 政治-貴州省貴陽市2025年高三年級(jí)適應(yīng)性考試(一)(貴陽一模)試題和答案
- 公司副總經(jīng)理英文簡(jiǎn)歷
- 2025浙江杭州地鐵運(yùn)營(yíng)分公司校園招聘665人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 第一篇 專題一 第2講 牛頓運(yùn)動(dòng)定律與直線運(yùn)動(dòng)
- 規(guī)劃高中生涯模板
- 中國(guó)卒中學(xué)會(huì)急性缺血性卒中再灌注治療指南 (2024)解讀-指南解讀系列
- 第二單元 第二次工業(yè)革命和近代科學(xué)文化 說課稿 2024-2025學(xué)年統(tǒng)編版九年級(jí)歷史下冊(cè)
- 《電氣安全培訓(xùn)課件》
- 2025年結(jié)核病防治知識(shí)競(jìng)賽題庫(kù)及答案(共117題)
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計(jì)
- TSDHCIA 016-2021 化工行業(yè)智能化水平評(píng)估規(guī)范
評(píng)論
0/150
提交評(píng)論