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

正文內(nèi)容

基于uclinux的電子郵件客戶端設(shè)計與實現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-20 05:51 本頁面
 

【文章內(nèi)容簡介】 in。charset=usasciiXActualTo: wang@XActualFrom: Mdaemon@Wele wang!如果請求成功,服務(wù)器返回的書多行應(yīng)答,先是“+OK”表示響應(yīng)成功,接著返回郵件的所有內(nèi)容,包括信頭,信體,如果有附件,附件內(nèi)容也以文本的形式返回。最后以一個句點“.”表示結(jié)束。為了防止單個句子引起客戶提前結(jié)束郵件讀取。指定的郵件不存在:客戶機:RETR 3服務(wù)器:ERR no such message如果郵件標(biāo)志刪除后,同樣會出現(xiàn)錯誤:客戶機:DELE 1服務(wù)器:+ OK message 1 deleted客戶機:RETR 1服務(wù)器:ERR no such messageRETR后面所帶的指定郵件標(biāo)號是必須的,如果不帶這個參數(shù)就會出錯??蛻魴C:ERTR服務(wù)器:ERR missing required message number parameter取出前幾行:TOP客戶機:TOP 1 1服務(wù)器:+OK Received: from [] by [] with RAW() forwang@。 Tue,04 Dec 2005 18:49 +0800Date:Tue,04 Dec 2004 18:49 +0800From: Mdaemon@ XMDSendNotificationsTo:[trash]Subject:Wele to the system for domain To: wang@ReplyTo: Mdaemon@MessageID:@Mime Version:ContentType:text/plain。charset=usasciiXActualTo: wang@XActualFrom: Mdaemon@Wele wang! 第四章 基于uclinux的pop3協(xié)議客戶端實現(xiàn) 主要工作和步驟本文通過移植ucLinux來實現(xiàn)POP3協(xié)議客戶端。要進行的工作主要有如下幾個:搭建硬件平臺,uclinux移植工作,建立交叉編譯平臺,安裝uCLinux內(nèi)核,安裝應(yīng)用程序庫以及其它工具,其中重點是要進行uclinux移植和建立交叉編譯平臺工作,最后編寫程序?qū)崿F(xiàn)POP3協(xié)議客戶端。前面的軟件平臺搭建中已經(jīng)提到移植的概念,即使一個實時內(nèi)核能在某個微處理器或微控制器上運行。下面是移植的主要步驟: 安裝uClinux移植包在進行uClinux移植時,選用一個與自己系統(tǒng)相近并且已經(jīng)成功的進行了uClinux操作系統(tǒng)移植的uClinux包將大大簡化uClinux的移植過程。uClinux源代碼的開放性使得這一點非常容易做到。,運行解壓縮,完成解壓縮后會產(chǎn)生uClinuxdist目錄,這樣完成uClinux移植包的安裝。 安裝交叉編譯器從,將其在根目錄下解壓縮,這樣就將交叉編譯器建立起來。 .配置內(nèi)核完成以上工作后,接下來可進行內(nèi)核的配置。下面是如何配置uClinux內(nèi)核:在Linux環(huán)境下打開終端,鍵入命令,如圖所示:cd /home/lch/uClinuxdistmake menuconfig進入uClinux配置環(huán)境,選中“Slect the Vender you wish to target”敲空格鍵,: uClinux配置環(huán)境選中Kernel/Library/Defaults Slection后,按Enter鍵,: 圖 uClinux配置環(huán)境 uClinux配置環(huán)境其中有兩個選項:Customize Kernel Settings和Customize Vendor/User Settings這兩項是定制內(nèi)核設(shè)置和定制用戶選項設(shè)置。選中此兩項,如果有其他配置可全部選中,然后選中Exit按下回車鍵退出,連續(xù)兩次后再出現(xiàn)的畫面中選擇Yes, uClinux配置環(huán)境在進入的內(nèi)核配置(Linux Kernel Configuration)中進行如下配置:1.配置General Setup options中,選中其中的兩項:Packet socke和TCP/IP networking; uClinux配置環(huán)境2. 配置Networking device Support,選中Networking device Support,敲空格進入,選中:Network device support? 選中:Ethernet (10 or 100Mbit) 進入下一步配置; uClinux配置環(huán)境:Other ISA cards,在下拉的選項中,選中:NE2000/NE1000 support,最后退出時選中Yes保存設(shè)置。通過以上步驟完成內(nèi)核配置。內(nèi)核配置完成后,緊接著是配置用戶選項,如圖47所示: uClinux配置環(huán)境然后按照所需進行配置,直到配置最后完成,最后進行保存。 .編譯uClinux配置完成后便可進行編譯了。按下面的步驟進行編譯:make dep /尋找文件的依存關(guān)系/make clean /清除以前構(gòu)造內(nèi)核時生成的所有目標(biāo)文件、模塊文件和臨時文件/make lib_only /編譯庫文件/make user_only /編譯用戶應(yīng)用程序文件/ make romfs /生成romfs文件系統(tǒng)/make image /這一步會報錯,不需要理會/make /編譯內(nèi)核中的文件/make image當(dāng)編譯成功后,在uClinuxS3C44B0X/ images目錄下產(chǎn)生3個文件:, 。,可在SDRAM中運行。在編譯成功后,進行整個操作系統(tǒng)的性能測試,當(dāng)uClinux功能滿足要求時, bank0對應(yīng)的Flash存儲器中,當(dāng)系統(tǒng)復(fù)位或上電時,內(nèi)核自解壓到SDRAM并運行。下圖是uClinux編譯成功后通過終端輸出的信息: 終端輸出信息以上就是uclinux 的移植,完成此工作以后就開始編寫POP3協(xié)議客戶端實現(xiàn)程序。. SOCKET網(wǎng)絡(luò)編程 Socket概述 Socket接口是一種網(wǎng)絡(luò)上跨平臺的應(yīng)用程序進程間通信機制,是加州大學(xué)Berkeley分校在Unix操作系統(tǒng)下為II)網(wǎng)絡(luò)通信開發(fā)的一個API(應(yīng)用程序接口),稱為BSD Sockets。Socket是應(yīng)用程序進程間通信的端點,計算機的兩個進程可分別建立Socket。經(jīng)過連接后。應(yīng)用程序的兩個進程間可以相互交換數(shù)據(jù)。在應(yīng)用開發(fā)中就像使用文件句柄一樣,可以對Socket句柄進行讀,寫操作。Socket由以下三個部分組成:1)Socket的IP地址:用于確定通信目的的計算機。2)Socket的通信端口:用于確定通信目的計算機的應(yīng)用程序進程。3)Socket類型:有流Socket、數(shù)據(jù)報Socket及原始Socket三種類型。應(yīng)用程序一般僅在同一類的套接口間通訊,目前常用的是流Socket和數(shù)據(jù)報Socket。 流Socket提供面向連接的、可靠的、雙向的、有序的、無重疊并且無記錄邊界的通信模式。具有一系列的數(shù)據(jù)糾錯功能,可以保證在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)及時、無誤地到達對方。其工作過程如下:服務(wù)器首先啟動,通過調(diào)用socket()建立一個套接字,然后調(diào)用bind()將該套接字和本地網(wǎng)絡(luò)地址聯(lián)系在一起,再調(diào)用listen()使套接字做好偵聽的準(zhǔn)備,并規(guī)定它的請求隊列的長度,之后就調(diào)用accept()來接收連接??蛻粼诮⑻捉幼趾缶涂烧{(diào)用connect()和服務(wù)器建立連接。連接一旦建立,客戶機和服務(wù)器之間就可以通過調(diào)用數(shù)據(jù)send()(發(fā)送)和recv()(接收)操作來發(fā)送和接收數(shù)據(jù)。最后,待數(shù)據(jù)傳送結(jié)束后,雙方調(diào)用close()關(guān)閉套接字。 Socket工作進程及函數(shù)介紹 Socket建立為了建立Socket,程序可以調(diào)用Socket函數(shù),該函數(shù)返回一個類似于文件描述符的句柄。socket函數(shù)原型為:int socket(int domain, int type, int protocol)。 domain指明所使用的協(xié)議族,通常為PF_INET,表示互聯(lián)網(wǎng)協(xié)議族(TCP/IP協(xié)議族);type參數(shù)指定socket的類型: SOCK_STREAM 或SOCK_DGRAM,Socket接口還定義了原始Socket(SOCK_RAW),允許程序使用低層協(xié)議;protocol通常賦值0。 Socket()調(diào)用返回一個整型socket描述符,可以在后面的調(diào)用使用它?! ocket描述符是一個指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,它指向描述符表入口。調(diào)用Socket函數(shù)時,socket執(zhí)行體將建立一個Socket,實際上建立一個Socket意味著為一個Socket數(shù)據(jù)結(jié)構(gòu)分配存儲空間。Socket執(zhí)行體管理描述符表。 兩個網(wǎng)絡(luò)程序之間的一個網(wǎng)絡(luò)連接包括五種信息:通信協(xié)議、本地協(xié)議地址、本地主機端口、遠端主機地址和遠端協(xié)議端口。Socket數(shù)據(jù)結(jié)構(gòu)中包含這五種信息。 Socket 配置通過socket調(diào)用返回一個socket描述符后,在使用socket進行網(wǎng)絡(luò)傳輸以前,必須配置該socket。面向連接的socket客戶端通過調(diào)用Connect函數(shù)在socket數(shù)據(jù)結(jié)構(gòu)中保存本地和遠端信息。無連接socket的客戶端和服務(wù)端以及面向連接socket的服務(wù)端通過調(diào)用 bind函數(shù)來配置本地信息。Bind函數(shù)將socket與本機上的一個端口相關(guān)聯(lián),隨后就可以在該端口監(jiān)聽服務(wù)請求。Bind函數(shù)原型為:int bind(int sockfd,struct sockaddr *my_addr, int addrlen)。Sockfd是調(diào)用socket函數(shù)返回的socket描述符,my_addr是一個指向包含有本機IP地址及端口號等信息的sockaddr類型的指針;addrlen常被設(shè)置為sizeof(struct sockaddr)。struct sockaddr結(jié)構(gòu)類型是用來保存socket信息的:  struct sockaddr {unsigned short sa_family。 /* 地址族, AF_xxx */ char sa_data[14]。 /* 14 字節(jié)的協(xié)議地址 */ }。 sa_family一般為AF_INET,代表Internet(TCP/IP)地址族;sa_data則包含該socket的IP地址和端口號?! ×硗膺€有一種結(jié)構(gòu)類型:  struct sockaddr_in {   short int sin_family。 /* 地址族 */unsigned short int sin_port。 /* 端口號 */  struct in_addr sin_addr。 /* IP地址unsigned char sin_zero[8]。 /* 填充0 以保持與struct sockaddr同樣大小 */  }。 這個結(jié)構(gòu)更方便使用。sin_zero用來將sockaddr_in結(jié)構(gòu)填充到與struct sockaddr同樣的長度,可以用bzero()或memset()函數(shù)將其置為零。指向sockaddr_in 的指針和指向sockaddr的指針可以相互轉(zhuǎn)換,這意味著如果一個函數(shù)所需參數(shù)類型是sockaddr時,可以在函數(shù)調(diào)用的時候?qū)⒁粋€指向 sockaddr_in的指針轉(zhuǎn)換為指向sockaddr的指針;或者相反?! ∈褂胋ind函數(shù)時,可以用下面的賦值實現(xiàn)自動獲得本機IP地址和隨機獲取一個沒有被占用的端口號:   = 0。 /* 系統(tǒng)隨機選擇一個未被使用的端口號 */   = INADDR_ANY。 /* 填入本機IP地址 */,函數(shù)會自動為你選擇一個未占用的端口來使用。同樣,系統(tǒng)會自動填入本機IP地址。注意在使用bind函數(shù)是需要將sin_port和sin_addr轉(zhuǎn)換成為網(wǎng)絡(luò)字節(jié)優(yōu)先順序;而sin_addr則不需要轉(zhuǎn)換。 計算機數(shù)據(jù)存儲有兩種字節(jié)優(yōu)先順序:高位字節(jié)優(yōu)先和低位字節(jié)優(yōu)先。Internet上數(shù)據(jù)以高位字節(jié)優(yōu)先順序在網(wǎng)絡(luò)上傳輸,所以對于在內(nèi)部是以低位字節(jié)優(yōu)先方式存儲數(shù)據(jù)的機器,在Internet上傳輸數(shù)據(jù)時就需要進行轉(zhuǎn)換,否則就會出現(xiàn)數(shù)據(jù)不一致。  下面是幾個字節(jié)順序轉(zhuǎn)換函數(shù):htonl():把32位值從主機字節(jié)序轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)序htons():把16位值從主機字節(jié)序轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)序ntohl():把32位值從網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換成主機字節(jié)序ntohs():把16位值從網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換成主機字節(jié)序Bind()函數(shù)在成功被調(diào)用時返回0;出現(xiàn)錯誤時返回1并將errno置為相應(yīng)的錯誤號。需要注意的是,在
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1