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

正文內(nèi)容

linux網(wǎng)絡(luò)編程——實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng)(文件)

 

【正文】 inCli(int sockfd)。 /* 刪郵件功能客戶端函數(shù), 699~713 行 */ int SendMailCli(int sockfd)。 收到連接請(qǐng)求 父進(jìn)程 子進(jìn)程 L R R D S E 開(kāi)始 創(chuàng)建套接字開(kāi)始傾聽(tīng) StartListening() 創(chuàng)建子進(jìn)程 fork() 注冊(cè)程序 RegisterSev() 結(jié)束 登錄程序 LoginSev() 郵件服務(wù)函數(shù) MailService() 讀郵件 ReadMailSev() 刪郵件 DelMailSev() 發(fā)郵件 SendMailSev() 結(jié)束 服務(wù)器主函數(shù) ServerMain() Linux 網(wǎng)絡(luò)編程 —— 實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng) 圖 1 服務(wù)器程序流程圖 R L 注冊(cè)成功 登錄成功 R E D S 開(kāi)始 建立連接 ConnectToServer() 客戶端主函數(shù) ClientMain() 注冊(cè)子程序 RegisterCli() 登錄子程序 LoginCli() 結(jié)束 郵件服務(wù)客戶端函數(shù) MailClient() 讀郵件 ReadMailCli() 刪郵件 DelMailCli() 發(fā)郵件 SendMailCli() 結(jié)束 Linux 網(wǎng)絡(luò)編程 —— 實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng) 圖 2 客戶端程序流程圖 1文件處理模塊接口函數(shù) 第 10 行和 11 行的兩個(gè)頭文件 和 包括了服務(wù)器郵件處理模塊和用戶信息管理模塊的函數(shù),在服務(wù)器程序中調(diào)用了以下六個(gè)接口函數(shù),分別說(shuō)明如下: int UsrStore(char*Usr,char*Pswd)。 int TestPasd(char*Usr,char*Pswd)。 int getmsgfrmdb(char* Usr)。函數(shù)調(diào)用見(jiàn) 257 行。當(dāng)發(fā)送郵件的客戶將郵件發(fā)送至服務(wù)器,服務(wù)器根據(jù)收信者的用戶名將郵件保存到特定文件中,即收信者的郵件文件中,以待收信者登錄時(shí)可以讀取。參數(shù)為整形郵件代號(hào),和字符串形式緩沖區(qū)。 int DelMail(int mail_no,char*Usr)。函數(shù)調(diào)用見(jiàn) 307 行。 運(yùn)行狀況: 由于條件限制,沒(méi)有 LINUX 聯(lián)網(wǎng)環(huán)境,該 郵件系統(tǒng)在同一臺(tái)電腦上模擬實(shí)現(xiàn)。下面是 GNOME 圖形界面客程序運(yùn)行圖。 圖三 為客戶端程序啟動(dòng)后的界面。 圖六展示發(fā)郵件界面。 待完善的功能以及實(shí)現(xiàn)設(shè)想: 由于時(shí)間有限,還有許多郵件系統(tǒng)本應(yīng)具備的功能沒(méi)有實(shí)現(xiàn),下面作一分析,并提出相應(yīng)的實(shí)現(xiàn)方案或設(shè)想。只是接收時(shí)應(yīng)能區(qū)別它是附件文件,而非一般的文本文件。至今沒(méi)有很好的解決方案。抄送也只需在客戶發(fā)收信者地址時(shí)增加一個(gè)數(shù)據(jù)結(jié)構(gòu),服務(wù)器保存郵件時(shí)就不僅保存在一個(gè)收信者的信件文件中了。實(shí)際的郵件系統(tǒng)采用公用的協(xié)議,用的是小于 1024 的保留端口號(hào),如 SMTP 協(xié)議端口號(hào)為 25。應(yīng)該說(shuō)一接到這個(gè)任務(wù)感到有些無(wú)從下手,難度很大,但經(jīng)過(guò)幾個(gè)月來(lái)慢慢的斟酌,學(xué)習(xí) ,以及動(dòng)手編程,在不斷發(fā)現(xiàn)問(wèn)題,解決問(wèn)題的過(guò)程中,任務(wù)漸漸化整為零,化難為易,最終得到實(shí)現(xiàn)。 同時(shí)在編程過(guò)程中感到 C 語(yǔ)言的靈活功能強(qiáng)大,以及 LINUX 操作系統(tǒng)的發(fā)展前景。這讓知道,在以后做更大項(xiàng)目的時(shí)候,遇到暫時(shí)的困難一定不要?dú)怵H,只要用心思考與探 索,利用一切有用的因素,一定能找到解決問(wèn)題的方案。 另外,經(jīng)過(guò)本次設(shè)計(jì),提高了自己對(duì)程序設(shè)計(jì)開(kāi)發(fā)系統(tǒng)的興趣,提高了對(duì) LINUX操作系統(tǒng)的興趣,為今后的學(xué)習(xí)方向,并行分布式處理軟件,提供了一個(gè)良好的開(kāi)端。 20 char to[MAXSIZE]。 24 time_t recvtime。 30 int SendSockChar(int,char)。 34 35 int RegisterSev(int )。 40 int SendMailList(int,char*)。 45 46 int main() 47 { 48 int sockfd,new_fd。 53 54 while(1) 55 { 56 sin_size=sizeof(struct sockaddr_in)。 58 if (new_fd==1) { 59 perror(accept)。 65 close(new_fd)。 77 char c,*ptr。n++) { 81 。 80 for (n=1。 68 } 69 while(waitpid(1,NULL,WNOHANG)0)。 61 } 62 printf(server:got connection from %s,i_ntoa())。their_addr,amp。 50 int sin_size。 43 int DelMailSev(int sockfd,char*Usr)。 37 int LoginSev(int )。 32 int sockendline(int )。 26 27 int ServerMain(int)。 22 char subject[MAXSIZE]。 Linux 網(wǎng)絡(luò)編程 —— 實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng) 參考文獻(xiàn) Unix Network Programming W Richard Stevents Prentice Hall 1998 The C Programming Language Dennis Ritchie amp。本次設(shè)計(jì)順利完成很大程度上得益于分工的合理和合作的愉快。(如 BSD 套接字函數(shù)的使用,以及許多 C 函數(shù)的使用) 鍛煉了自己分析問(wèn)題解決問(wèn)題的能力,在編程過(guò)程中,經(jīng)常遇到這樣那樣的問(wèn)題而使進(jìn)度有所停頓,經(jīng)過(guò)許多思考和嘗試,往往能在解決問(wèn)題時(shí)感到山重水復(fù)疑無(wú)路,柳暗花明又一村的感覺(jué)。實(shí)際上,通過(guò)幾個(gè)月的思考、學(xué)習(xí)和動(dòng)手,在完成任務(wù)的同時(shí),自己收獲頗多,分別總結(jié)如下: 熟悉了 LINUX 操作系統(tǒng)編程環(huán)境,熟悉 LINUX 網(wǎng)絡(luò)編程的基本思想,積累了一些 C 語(yǔ)言編程經(jīng)驗(yàn),自己的動(dòng)手能力得到提高。在模擬情況下,系統(tǒng)運(yùn)行程序較少,發(fā)生端口號(hào)沖突的概率是很小的,但用到實(shí)際中這是一個(gè)不可避免的問(wèn)題,目前還沒(méi)有好的解決方案,只有當(dāng)這個(gè)郵件系統(tǒng)非常完善,能申請(qǐng)一個(gè)保留的固定的端口號(hào),才能解決這個(gè)問(wèn)題。本系統(tǒng)在服務(wù)器主程序 DEFINE 語(yǔ)句定義了一個(gè)端口號(hào)( 5500,見(jiàn)第 14 行),在用 BIND 函數(shù)綁定端口時(shí)就綁定的這個(gè)端口。 (3)郵件回復(fù)功能和抄送功能:這兩個(gè)功能不難實(shí)現(xiàn)。 (2)郵件編輯功能:本郵件系統(tǒng)在用戶發(fā)郵件時(shí),輸入收信者地址、主題以及郵件正文采用在 命令行直接輸入的形式,這樣不利于郵件的編輯。此功能并不難實(shí)現(xiàn)。 Linux 網(wǎng)絡(luò)編程 —— 實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng) 圖一 圖二 Linux 網(wǎng)絡(luò)編程 —— 實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng) 圖三 圖四 Linux 網(wǎng)絡(luò)編程 —— 實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng) 圖五 圖六 Linux 網(wǎng)絡(luò)編程 —— 實(shí)現(xiàn)一個(gè)局域網(wǎng)的電子郵件系統(tǒng) 已實(shí)現(xiàn)的功能: 事先定的功能目標(biāo),郵件系統(tǒng)的基本功能都已實(shí)現(xiàn)。登陸成功后得到郵件信息列表,并被提示輸入服務(wù)請(qǐng)求。 圖一展示了在 GNOME 圖形界面服務(wù)器程序和客戶端程序同時(shí)運(yùn)行于兩個(gè)虛擬終端的情形。 在字符界面用虛擬終端方式(用Alt+F*切換),用兩個(gè)虛擬終端分別模擬服務(wù)器和客戶機(jī),分別運(yùn)行服務(wù)器程序和客戶機(jī)程序,運(yùn)行成功。 二、 補(bǔ)充說(shuō)明 程序的編譯和啟動(dòng): 服務(wù)器程序 C文件和 H文件放在同一個(gè)目錄下,用 SHELL 提示符下,輸入語(yǔ)句: gcc *.c o sevprog ,既得到可執(zhí)行文件 sevprog ,在 SHELL 提示符下,輸入 ./sevprog 即啟動(dòng)了服務(wù)器程序。參數(shù)為整形郵件代號(hào)和字符串形式的用戶名。以待通信 模塊將它發(fā)送到客戶端。 int GetMail(int mail_no,char* buf)。 保存郵件。參數(shù)為字符串形式的用戶名。參數(shù)為字符串形式的用戶名和密碼,當(dāng)服務(wù)器 收到登錄用戶傳來(lái)的用戶名和密碼,調(diào)用此函數(shù),查找 PASSWD 文件,若找到匹配的用戶密碼對(duì),返回 TRUE( 1),否則返回 FALSE( 0)。參數(shù)為字符串形式的用戶名和密碼,當(dāng)服務(wù)器收到注冊(cè)客戶傳來(lái)的密碼,調(diào)用此函數(shù),用戶名和密碼將寫入用戶信息文件 PASSWD 中去。其中,服務(wù)器程序根據(jù)收到的命令轉(zhuǎn)移,客戶端程序根據(jù)用戶輸入的命令轉(zhuǎn)移。 /*登陸成功郵件服務(wù)客戶端函數(shù), 570~605 行 */ int ReadMailCli(int sockfd)。 /*發(fā)送郵件功能服務(wù)器端函數(shù),315~372 行 */ b、客戶端服 務(wù)函數(shù): int RegisterCli(int sockfd)。 /*進(jìn)入信箱后郵件服務(wù)服務(wù)器端函數(shù), 226~250 行 */ int SendMaillist(int sockfd,char*Usr)。 a、服務(wù)器服務(wù)函數(shù): int RegisterSev(int sockfd )。該函數(shù)的內(nèi)容為提供用戶進(jìn)郵件系統(tǒng)的初始交互界面,讓用戶輸入初始命令,選擇注冊(cè)或者登錄,然后調(diào)用相應(yīng)子程序進(jìn)行服務(wù),當(dāng)子程序退出,該函數(shù)也結(jié)束,客戶端的主程序也結(jié)束。函數(shù)主要內(nèi)容為接受用戶第一次傳來(lái)的服務(wù)請(qǐng)求,決定提供注冊(cè)服務(wù)或登錄服務(wù),然后進(jìn)入相應(yīng)服務(wù)函數(shù)。服務(wù)器和客戶端的該函數(shù)分別為 StartListening()和 ConnectToServer(), 其中StartListening()通過(guò)調(diào)用 socket(),bind(),listen()建立傾聽(tīng)套接字,開(kāi)始等待客戶的連接; ConnectToServer()通過(guò)調(diào)用 socket(),connect()建立與服務(wù)器的連接,其參數(shù)為服務(wù)器的 IP 地址和端口號(hào),調(diào)用時(shí)傳入命令行參數(shù) argv[1]和 argv[2]。只是用到命令行參數(shù),傳入服務(wù)器程序運(yùn)行的 IP 地址和端口號(hào)。這樣可以實(shí) 現(xiàn)服務(wù)器同時(shí)為多個(gè)客戶服務(wù),這種工作方式成為并發(fā)服務(wù)器。 MYPORT 為服務(wù)器端建立 SOCKET 連接使用的端口號(hào)。函數(shù)實(shí)現(xiàn)見(jiàn) 107~113 行。函數(shù)實(shí)現(xiàn)見(jiàn) 100~106 行。實(shí)現(xiàn)見(jiàn) 73~99 行。一行指的是一換行符 39。 char GetSockChar(int sockfd) :接收一個(gè)同步字符,接收對(duì)方用SendSockChar()發(fā)來(lái)的同步字符,讀取過(guò)程中用 WHILE 循環(huán),直到讀到有效的同步字符為止,函數(shù)返回值為讀到的同步字符。參數(shù)為套接字號(hào)和一個(gè)待發(fā)送的字符。在本程序中,同步采用一個(gè)簡(jiǎn)單有效的辦法。有件結(jié)構(gòu)定義見(jiàn) 18~25行。雖然這兩個(gè)程序
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1