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

正文內(nèi)容

linux網(wǎng)絡(luò)編程——實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng)-資料下載頁

2024-12-06 02:48本頁面

【導(dǎo)讀】計算機網(wǎng)絡(luò)的迅速發(fā)展,對人類社會諸多領(lǐng)域產(chǎn)生了巨大的影響。持網(wǎng)絡(luò)的操作系統(tǒng)中,LINUX以其優(yōu)秀的性能越來越引起人們的關(guān)注。本畢業(yè)設(shè)計論文分為兩大部分。第一部分對LINUX以及LINUX網(wǎng)絡(luò)編程環(huán)境。詳細(xì)分析了編程中將用到的BSD套接字函數(shù)族的使用。到詳細(xì)設(shè)計,并在后面附了本人實現(xiàn)的C語言源代碼。按照LINUX開發(fā)者的說法,LINUX是一個遵循POSIX標(biāo)。要追述LINUX的發(fā)展歷史,要先從UNIX談起。心自己寫一個保護模式下的操作系統(tǒng),這就是Linux的原型。善,和GNU軟件的支持,LINUX已經(jīng)是一個功能強大的類UNIX操作系統(tǒng)了。目前LINUX的發(fā)展趨勢為分布式和嵌入式。的比較前沿的課題集群系統(tǒng)超級服務(wù)器就多采用LINUX操作系統(tǒng)。套接字實質(zhì)上提供了進程通信的端點。進程通信之前,雙方首先必須各。這與套接字機制非常相似。套接字利用網(wǎng)絡(luò)通信設(shè)施進行通信,但他對通信。設(shè)施的細(xì)節(jié)毫不關(guān)心。套接字在系統(tǒng)中以文件描述符的形式存在。一個套接字對應(yīng)一個文件描述符,由操作系統(tǒng)分配。

  

【正文】 ,即啟動了客戶程序, 為服務(wù)器的 IP 地址, 5500 為服務(wù)器程序中綁定的端口號。 運行狀況: 由于條件限制,沒有 LINUX 聯(lián)網(wǎng)環(huán)境,該 郵件系統(tǒng)在同一臺電腦上模擬實現(xiàn)。實際運行環(huán)境為 REDHAT LINUX 。 在字符界面用虛擬終端方式(用Alt+F*切換),用兩個虛擬終端分別模擬服務(wù)器和客戶機,分別運行服務(wù)器程序和客戶機程序,運行成功。在 GNOME 圖形界面,打開兩個終端窗口,分別運行服務(wù)器程序和客戶端程序也得到成功運行。下面是 GNOME 圖形界面客程序運行圖。 LINUX 截圖程序得到。 圖一展示了在 GNOME 圖形界面服務(wù)器程序和客戶端程序同時運行于兩個虛擬終端的情形。 圖二展示了服務(wù)器程序啟動后的情形,服務(wù)器界面反映服務(wù)器的狀態(tài)。 圖三 為客戶端程序啟動后的界面。用戶選擇注冊功能,注冊了一個新用戶tangweii. 圖四展示用戶 tangzj 的登錄狀況。登陸成功后得到郵件信息列表,并被提示輸入服務(wù)請求。 圖五為登陸成功后的界面,用戶 tangzj 選擇讀郵件命令,并讀了一封來自ducktang 的信。 圖六展示發(fā)郵件界面。 tangzj 選擇發(fā)郵件命令,給 ducktang 編輯了一封郵件并發(fā)出。 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 圖一 圖二 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 圖三 圖四 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 圖五 圖六 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 已實現(xiàn)的功能: 事先定的功能目標(biāo),郵件系統(tǒng)的基本功能都已實現(xiàn)。注冊用戶,在客戶端校驗密碼,服務(wù)器保存資料;用戶登錄,服務(wù)器校驗密碼;客戶登錄成功時,服務(wù)器將該用戶郵件列表傳至客戶機,用戶選擇讀郵件可以讀相應(yīng)郵件,選擇刪郵件可以刪相應(yīng)郵件,選擇發(fā)郵件可以進行郵件輸入,將郵件內(nèi)容發(fā)給服務(wù)器,讓服務(wù)器保存在文件系統(tǒng)中,待收信者登錄將郵件信息發(fā)給他,這樣就完成了一次 郵件發(fā)送過程。 待完善的功能以及實現(xiàn)設(shè)想: 由于時間有限,還有許多郵件系統(tǒng)本應(yīng)具備的功能沒有實現(xiàn),下面作一分析,并提出相應(yīng)的實現(xiàn)方案或設(shè)想。 (1)發(fā)附件:本郵件系統(tǒng)沒有發(fā)附件功能。此功能并不難實現(xiàn)。由于 LINUX文件都采用二進制流形式,附件可以向文本文件一樣打開后通過套接字發(fā)送。只是接收時應(yīng)能區(qū)別它是附件文件,而非一般的文本文件。也就是附件的文件類型應(yīng)該用文本形式另外發(fā)送,這樣才能讓接受者知道福附件到底是什么文件。 (2)郵件編輯功能:本郵件系統(tǒng)在用戶發(fā)郵件時,輸入收信者地址、主題以及郵件正文采用在 命令行直接輸入的形式,這樣不利于郵件的編輯。這是本郵件系統(tǒng)有待完善的重要地方。至今沒有很好的解決方案。設(shè)想可以調(diào)用 VI 等編輯程序,將郵件內(nèi)容編輯好了,再采用發(fā)送文件的方式發(fā)郵件。 (3)郵件回復(fù)功能和抄送功能:這兩個功能不難實現(xiàn)。郵件回復(fù)只需在客戶端進入郵箱選擇命令時增加一個選項,然后再增加對應(yīng)的服務(wù)函數(shù),由于實現(xiàn)與發(fā)郵件有所類似所以為簡便起見,編程時忽略了該功能。抄送也只需在客戶發(fā)收信者地址時增加一個數(shù)據(jù)結(jié)構(gòu),服務(wù)器保存郵件時就不僅保存在一個收信者的信件文件中了。 (4)服務(wù)器端口號問題:在上一節(jié)介紹 客戶端通信模塊時提到一個問題,即客戶程序必須知道服務(wù)器程序的 IP 地址和端口號, IP 地址是固定的,但端口號卻不一定固定。本系統(tǒng)在服務(wù)器主程序 DEFINE 語句定義了一個端口號( 5500,見第 14 行),在用 BIND 函數(shù)綁定端口時就綁定的這個端口??蛻舫绦蛟趩映绦驎r用命令行參數(shù)傳入服務(wù)器的 IP 地址和端口號,所以服務(wù)器的端口號必須為客戶機所知,但在實際情況中這并不容易做到。實際的郵件系統(tǒng)采用公用的協(xié)議,用的是小于 1024 的保留端口號,如 SMTP 協(xié)議端口號為 25。我們實現(xiàn)的郵件系Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 統(tǒng)不能使用保留端口號,所以服務(wù)器程序中 綁定的端口號有可能已被其他程序使用。在模擬情況下,系統(tǒng)運行程序較少,發(fā)生端口號沖突的概率是很小的,但用到實際中這是一個不可避免的問題,目前還沒有好的解決方案,只有當(dāng)這個郵件系統(tǒng)非常完善,能申請一個保留的固定的端口號,才能解決這個問題。 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 設(shè)計體會與致謝 這次畢業(yè)設(shè)計是我第一次編寫大型的程序,在指導(dǎo)老師沈明玉老師的指點下和合作者唐志軍的通力合作下,這次設(shè)計的任務(wù)順利完成。應(yīng)該說一接到這個任務(wù)感到有些無從下手,難度很大,但經(jīng)過幾個月來慢慢的斟酌,學(xué)習(xí) ,以及動手編程,在不斷發(fā)現(xiàn)問題,解決問題的過程中,任務(wù)漸漸化整為零,化難為易,最終得到實現(xiàn)。在這一過程中,實現(xiàn)老師給出這一任務(wù)的初衷,不要求做出來的東西有多完美,只要求在動手的過程中能學(xué)到書本上學(xué)不到的東西。實際上,通過幾個月的思考、學(xué)習(xí)和動手,在完成任務(wù)的同時,自己收獲頗多,分別總結(jié)如下: 熟悉了 LINUX 操作系統(tǒng)編程環(huán)境,熟悉 LINUX 網(wǎng)絡(luò)編程的基本思想,積累了一些 C 語言編程經(jīng)驗,自己的動手能力得到提高。本次設(shè)計使用 LINUX編程環(huán)境,沒有先進的調(diào)試工具,這在編程中用到一些技巧,積累了一些編程經(jīng)驗。 同時在編程過程中感到 C 語言的靈活功能強大,以及 LINUX 操作系統(tǒng)的發(fā)展前景。 鍛煉了自己現(xiàn)學(xué)現(xiàn)用的能力,許多東西以前都沒有接觸過,通過查閱參考書能夠快速的使用。(如 BSD 套接字函數(shù)的使用,以及許多 C 函數(shù)的使用) 鍛煉了自己分析問題解決問題的能力,在編程過程中,經(jīng)常遇到這樣那樣的問題而使進度有所停頓,經(jīng)過許多思考和嘗試,往往能在解決問題時感到山重水復(fù)疑無路,柳暗花明又一村的感覺。當(dāng)一個個的問題得到解決,系統(tǒng)的雛形就逐漸形成。這讓知道,在以后做更大項目的時候,遇到暫時的困難一定不要氣餒,只要用心思考與探 索,利用一切有用的因素,一定能找到解決問題的方案。 鍛煉了團隊合作能力。本次設(shè)計順利完成很大程度上得益于分工的合理和合作的愉快。在互相不知道對方怎樣實現(xiàn)的情況下,能夠順利對接成功,這得意于一開始有明確的分工,在編程過程中不斷有交流,特別是需要接口的地方有比較嚴(yán)格的商定,如一些需要互相調(diào)用的函數(shù)名,函數(shù)參數(shù)等等。 另外,經(jīng)過本次設(shè)計,提高了自己對程序設(shè)計開發(fā)系統(tǒng)的興趣,提高了對 LINUX操作系統(tǒng)的興趣,為今后的學(xué)習(xí)方向,并行分布式處理軟件,提供了一個良好的開端。 再次感謝沈明玉老師的指導(dǎo)和唐志軍的合作。 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 參考文獻 Unix Network Programming W Richard Stevents Prentice Hall 1998 The C Programming Language Dennis Ritchie amp。 Ken Thompson, Prentice Hall 1988 操作系統(tǒng)原理(第三版) 龐麗萍 華中科技大學(xué)出版社 Linux 網(wǎng)絡(luò)編程 林宇 郭凌云 人民郵電出版社 Linux 網(wǎng)絡(luò)編程 李卓桓 瞿華 機械工業(yè)出版社 Linux C 函數(shù)庫參考手冊 徐千洋 中國青年出版社 GNU/LINUX 編程指南 等著,王勇等譯 清華大學(xué)出版社 數(shù)據(jù)通信與計算機網(wǎng)絡(luò) 高傳善等 高等教育出版社 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 附錄: 服務(wù)器程序和客戶端程序的源代碼 0 /* */ 1 include 2 include 3 include 4 include 5 includesys/ 6 includei/ 7 includesys/ 8 includesys/ 9 10 include 11 include 12 13 define MAXSIZE 500 14 define MYPORT 5500 15 define BACKLOG 10 16 define OK 1 17 18 typedef struct{ 19 int mail_num。 20 char to[MAXSIZE]。 21 char from[MAXSIZE]。 22 char subject[MAXSIZE]。 23 char content[MAXSIZE]。 24 time_t recvtime。 25 }MailStruct。 26 27 int ServerMain(int)。 28 29 char GetSockChar(int)。 30 int SendSockChar(int,char)。 31 int readline(int,void*,int)。 32 int sockendline(int )。 33 void CutEndl(char* str)。 34 35 int RegisterSev(int )。 36 int RecvUsrPswd(int,char* ,char* )。 37 int LoginSev(int )。 38 39 int MailService(int,char*)。 40 int SendMailList(int,char*)。 Linux 網(wǎng)絡(luò)編程 —— 實現(xiàn)一個局域網(wǎng)的電子郵件系統(tǒng) 41 42 int ReadMailSev(int sockfd)。 43 int DelMailSev(int sockfd,char*Usr)。 44 int SendMailSev(int sockfd,char*Usr)。 45 46 int main() 47 { 48 int sockfd,new_fd。 49 struct sockaddr_in their_addr。 50 int sin_size。 51 52 sockfd=StartListening()。 53 54 while(1) 55 { 56 sin_size=sizeof(struct sockaddr_in)。 57 new_fd=accept(sockfd,(struct sockaddr*)amp。their_addr,amp。sin_size)。 58 if (new_fd==1) { 59 perror(accept)。 60 continue。 61 } 62 printf(server:got connection from %s,i_ntoa())。 63 if (!fork()) { 64 ServerMain(new_fd)。 65 close(new_fd)。 66 } 67 close(new_fd)。 68 } 69 while(waitpid(1,NULL,WNOHANG)0)。 70 } 71 72 73 int /* read a text line from a descriptor */ 74 readline (int fd,void *vptr,int maxlen) 75 { 76 int n,rc。 77 char c,*ptr。 78 79 ptr = vptr。 80 for (n=1。nmaxlen。n++) { 8
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1