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

正文內(nèi)容

畢業(yè)論文基于linux的ftp服務(wù)器的研究與實(shí)現(xiàn)-文庫(kù)吧資料

2024-11-15 20:55本頁(yè)面
  

【正文】 共享內(nèi)存方式的進(jìn)程間通信。通常,信號(hào)量是用來(lái)實(shí)現(xiàn)對(duì)共享存儲(chǔ)數(shù)據(jù)存取的同步。最后用 shmdt(p)來(lái) 脫離映射 , p 指向內(nèi)存 空間的一個(gè)指針變量不為空。其次用 shmat(shmid,NULL,0)把共享內(nèi)存的地址映射到進(jìn)程的邏輯地址空間中去 。首先, shmget 用來(lái) 創(chuàng)建共享內(nèi)存 ,這個(gè)函數(shù)有點(diǎn)類似malloc 函數(shù)。通常由一個(gè)進(jìn)程創(chuàng)建一塊共享內(nèi)存區(qū),其余進(jìn)程對(duì)這塊內(nèi)存區(qū)進(jìn)行讀寫。其實(shí)現(xiàn)主要要依賴信號(hào)量和共享內(nèi)存還有哈希表。信號(hào)處理函數(shù)計(jì)算實(shí)時(shí)速度的代碼在附件中,這里不做詳細(xì)描述。首先打開文件,驗(yàn)證是否斷點(diǎn)續(xù)傳,然后安裝時(shí)鐘信號(hào)處理函數(shù),之后每隔一秒發(fā)送一次時(shí)鐘信號(hào),接著進(jìn)行數(shù)據(jù)的傳輸,在此記下傳輸總字節(jié)數(shù)的大小,然后通過(guò)信號(hào)函數(shù)處理計(jì)算出此時(shí)的速度,與配置文件里面的相比,如果偏大了就休眠一秒,以此達(dá)到速度的限制。這樣就達(dá)到了上 傳下載的速度限制。 限制上傳,下載速度的實(shí)現(xiàn) 在配置文件中我設(shè)置了一個(gè)文件上傳和下載的最大速度,這個(gè)主要是為了防止用戶上傳下載出現(xiàn)異常的情況。首先信號(hào)量在這里相當(dāng)于一個(gè)標(biāo)志,就是 IP 是否已連接的標(biāo)志,而共享內(nèi)存中存放的是 IP 的總連接數(shù),即總共有幾臺(tái)主機(jī)連到了服務(wù)端。限制上傳,下載速度;限制 每 IP 連接最大數(shù)及總 IP 連接數(shù);統(tǒng)計(jì)上傳下載的文件個(gè)數(shù)及大小。最后進(jìn)入數(shù)據(jù)連接進(jìn)程里面進(jìn)行處理。如果測(cè)試到被動(dòng)連接的時(shí)候要客戶端的 IP 和端口號(hào)從配置文件中獲取出來(lái)當(dāng)然也可以通過(guò)自己寫的一個(gè)功能函數(shù) get_host_ip()功能是獲取 IP,并且通過(guò)系統(tǒng)函數(shù) getsocketname 在還沒(méi)調(diào)用 bind 之前綁定 0 端口得到系統(tǒng)內(nèi)存分配的一個(gè)還沒(méi)被使用的端口號(hào) ,然后把點(diǎn)分十進(jìn)制的 IP 和后面的端口號(hào)以“ ,”的形式組裝出來(lái)給一個(gè)臨時(shí)變量發(fā)送給客戶端,所以當(dāng)客戶端接收到 例如 PORT 192,168,203,5,9,91 它表示客戶端的 IP 地址是 ,端口是9*256+91[11]?;谝陨系墓ぷ髂J奖緦?shí)現(xiàn)方法是:首先,先寫一個(gè)測(cè)試函數(shù)通過(guò)data_conn_sock 的返回值量來(lái)判斷, data_conn_sock 的返回值是通過(guò)客戶端那邊發(fā)送過(guò)來(lái)的命令被服務(wù)端截取之后和“ port”與“ pasv”比得出結(jié)果的。 (1)我打開了 N 端口,你來(lái)連接我吧 (1)我打開了 N 端口你來(lái)連接吧 (2)我主動(dòng)來(lái)連接你的 N 端口 (2)我來(lái)連接你 圖 43 potr(左 )pasv(右 )的模型 由圖可知, FTP 的主動(dòng)模式主要是首先客戶端發(fā)送了連接請(qǐng)求,然后服務(wù)端接收到請(qǐng)求后由服務(wù)端主動(dòng)連接客戶端的一種工作模式。 具體代碼在附件中。 服務(wù)器進(jìn)程 在請(qǐng)求到來(lái)生成子進(jìn)程處理請(qǐng)求時(shí), 子進(jìn)程可能會(huì)成為僵尸進(jìn)程導(dǎo)致系統(tǒng)資源消耗,因?yàn)楦高M(jìn)程可能先于子進(jìn)程結(jié)福州大學(xué)陽(yáng)光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 12 束 [10]。 因此要把這個(gè)文件創(chuàng)建掩模清除,自己再重新創(chuàng)建一個(gè)掩模。因此,最好把進(jìn)程的工作目錄改到系統(tǒng)的特定目錄下,這樣就不會(huì)被常規(guī)操作卸下。 關(guān)閉文件描述符不僅可以避免系統(tǒng)資源浪費(fèi),并且可以防止進(jìn)程所在的文件系統(tǒng)因文件描述符一直存在而無(wú)法卸下導(dǎo)致的問(wèn)題發(fā)生。 ( 4) 關(guān)閉打開的文件描述符 因?yàn)樵?fork()一個(gè)子進(jìn)程的同時(shí),子進(jìn)程會(huì)創(chuàng)建它的父進(jìn)程那里復(fù)制一份文件描述符。為了能夠讓守護(hù)進(jìn)程獨(dú)立出來(lái),不受控制就可以調(diào)用 setsid()函數(shù), setsid()函數(shù)的主要功能就是使進(jìn)程成為新的進(jìn)程組長(zhǎng)和會(huì)話組長(zhǎng),這樣就能夠從父進(jìn)程那邊繼承下來(lái)的登錄會(huì)話和進(jìn)程組真正脫離。創(chuàng)建守護(hù)進(jìn)程的關(guān)鍵步驟如下 : ( 1) 在后臺(tái)實(shí)現(xiàn) 要實(shí)現(xiàn)守護(hù)進(jìn)程在后臺(tái)實(shí)現(xiàn),就必須讓守護(hù)進(jìn)程不被掛起,采用的方法是調(diào)用 fork()函 數(shù)讓父進(jìn)程結(jié)束,這樣守護(hù)進(jìn)程就會(huì)作為子進(jìn)程在后臺(tái)運(yùn)行。 基于 Linux的 FTP 服務(wù)器 11 守護(hù)進(jìn)程的實(shí)現(xiàn) Linux 系統(tǒng)在啟動(dòng)過(guò)程中會(huì)開啟很多后臺(tái)服務(wù)和進(jìn)程,而其中運(yùn)用的一個(gè)重要技術(shù)就是守護(hù)進(jìn)程。如果是“ start”的時(shí)候,系統(tǒng)會(huì)根據(jù) RETVAL的值判斷是不是第一次啟動(dòng),如果 RETVAL 是 0那么就是還未被啟動(dòng),因此系統(tǒng)允許啟動(dòng)服務(wù)器,如果不是就提示服務(wù)器已經(jīng)啟動(dòng)的字眼。 *) echo $Using as: $0 start|stop|restart exit 1 Esac exit $RETVAL 其中 是注釋的意思。 restart) stop echo $prog starting... sleep 1。 福州大學(xué)陽(yáng)光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 10 RETVAL=$? echo return $RETVAL } case $1 in start) start 。 exit 0//0 表示正常退出 1 表示異常退出 [ x /usr/local/bin/hfftpd ] || exit 0 RETVAL=0//一個(gè)標(biāo)志位 prog=hfftpd//進(jìn)程名字 start(){ echo $Starting $prog... /usr/local/bin/hfftpd /etc/hfftpd/amp。 !/bin/bash //為本腳本解析使用哪種 shell 來(lái)解釋一下的代碼 Source function library.//源程序的庫(kù)函數(shù) . /etc/ Source working configuration.//網(wǎng)絡(luò)狀態(tài) . /etc/sysconfig/work Check that working is up.//檢查網(wǎng)絡(luò)是否連接 ${NETWORKING}是一個(gè)數(shù)組 [ ${NETWORKING} = no ] amp。不僅如此,使用 SHELL 進(jìn)行程序編程可以簡(jiǎn)單的完成一些小任務(wù),同時(shí)就算是最古老的版本的 Linux 也會(huì)在安裝中提供一個(gè) SHELL,所以用 SHELL 編寫出來(lái)的腳本易于移植。而所謂的SHELL 是一個(gè)交互式命令解釋器和一種命令編程語(yǔ)言,采用的語(yǔ)法和 C 編程語(yǔ)言及其相似,只是寫的字母順序相反,是交互式地從終端鍵盤或者是從一個(gè)文件來(lái)執(zhí)行命令的。 Bash 的優(yōu)點(diǎn)是命令補(bǔ)全功能,命令歷史(就是正常退出登錄時(shí)會(huì)自動(dòng)保存歷史文件),而且重點(diǎn)是可以在前臺(tái)或者 后臺(tái)執(zhí)行。通信模型的程序 ftp_service()在附件中。 用戶界面 控制 進(jìn)程 數(shù)據(jù)傳送進(jìn)程 控制進(jìn)程 數(shù)據(jù)傳送進(jìn)程 因特網(wǎng) 福州大學(xué)陽(yáng)光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 8 4 基于 Linux 的 FTP 服務(wù)器的重點(diǎn)模塊實(shí)現(xiàn) 主程序流程圖 圖 41 是本課題的主程序流程圖。 [8] TCP 控制連接 FTP客戶端 TCP 數(shù)據(jù)連接 圖 31 FTP 使用的兩個(gè) TCP 連接 由上圖可知 FTP 在進(jìn)行文件傳輸時(shí),客戶端與服務(wù)端之間要建立兩個(gè)并行的 TCP 連接,一個(gè)是在會(huì)話期間一直打開進(jìn)行監(jiān)聽(tīng)的“控制連接”,一個(gè)用來(lái)進(jìn)行客戶端與服務(wù)端之間進(jìn)行數(shù)據(jù)傳輸即“數(shù)據(jù)連接”。主進(jìn)程工作步驟如下: ( 1) 打開配置文件中所設(shè)置的端口號(hào),使客戶進(jìn)程可以連接的上; ( 2) 等待客戶進(jìn)程發(fā)出連接請(qǐng)求; ( 3) 啟動(dòng)從屬進(jìn)程來(lái)處理客戶進(jìn)程發(fā)來(lái)的請(qǐng)求。 FTP 的基本工作原理 文件傳輸協(xié)議 ( FTP) 只是提供一些文件傳送的一些基本服務(wù),使用 TCP 可靠傳輸。 pasv 模式即我們平常說(shuō)的被動(dòng)模式,這里的主被動(dòng)是針對(duì)服務(wù)器來(lái)說(shuō)的,被動(dòng)模式即由客戶端主動(dòng)連接服務(wù)器以實(shí)現(xiàn)通信,而 port模式即我們平常說(shuō)的主動(dòng)模式是由服務(wù)器主動(dòng)連接客戶端以達(dá)到通 信的目的之后我會(huì)在下面詳細(xì)說(shuō)明。這里上傳,下載文件是 FTP 服務(wù)器的基本的一項(xiàng)功能,而斷點(diǎn)續(xù)傳也是大部分客戶有用到的功能,所謂的斷點(diǎn)續(xù)傳就是可以再斷點(diǎn)的地方繼續(xù)傳,這是為了解決 TCP 協(xié)議中的重傳問(wèn)題,因此極大地方便了用戶上傳,下 載文件,因?yàn)槔缯f(shuō)有時(shí)候用戶的一個(gè)文件沒(méi)傳完的話,如果沒(méi)有斷點(diǎn)續(xù)傳的功能,那么下次下載該文件時(shí),就只能從頭開始下了這樣子很不方便而且浪費(fèi)時(shí)間,而如果有了這項(xiàng)斷點(diǎn)續(xù)傳功能的話那么客戶就可以在下次下載該文件時(shí)利用斷點(diǎn)續(xù)傳的功能實(shí)現(xiàn)整個(gè)文件在上傳或下載沒(méi)有傳好的地方繼續(xù)上傳或是下載功能。這里說(shuō)的混合使用是指在客戶端進(jìn)行相應(yīng)的操作的時(shí)候,客戶端時(shí)行會(huì)對(duì)所進(jìn)行的操作轉(zhuǎn)化成為多個(gè)命令發(fā)送到服務(wù)器端。 ( 2)目錄操作模塊主要實(shí)現(xiàn)的功能有添加目錄,刪除目錄,重命名目錄,父目錄,改變工作目錄,列出目錄詳細(xì)清單等,這些都是 用戶對(duì)目錄的一些基本操作,當(dāng)然要求這個(gè)用戶不可以是匿名用戶。登錄用戶方式時(shí)登陸的用戶名必須是運(yùn)行該程序的 Linux 環(huán)境下的一個(gè)用戶,否則將無(wú)權(quán)進(jìn)行登陸。下面對(duì)各個(gè)模塊進(jìn)行簡(jiǎn)單的介紹。 TCP 連接的端點(diǎn)叫做套接字或插口,而 Linux 的系統(tǒng)正好也又包含套接字這些系統(tǒng)函數(shù),因此編程起來(lái)會(huì)比較方便。而 UDP 協(xié)議在傳送數(shù)據(jù)之前不需要建立連接,遠(yuǎn)程的主機(jī)運(yùn)輸層在收到 UDP 報(bào)文后,不需要給出確認(rèn),也就是不需要經(jīng)過(guò)三次握手,提供的是不可靠交付 [8]。 ( 3) 在 Linux 上面具有 make 工具 ,它的 基本的功能是調(diào)用 makefile 文件 并且 通過(guò)makefile 文件來(lái)描述源程序之間的相互依賴關(guān)系并自動(dòng)維護(hù)編譯工作 ,因此使用起來(lái)簡(jiǎn)單又方便。 并且 Shell 充許 靈活地使用數(shù)據(jù)流,提供通配符、輸入 /輸出重定向、管道線等機(jī)制,方便了模式匹配、 I/O 處理和數(shù)據(jù)傳輸。 如果在可信路徑上調(diào)用 shell 命令,并且 /etc/security/user 文件中用戶的 tpath 屬性沒(méi)有 always 值,那么就不維護(hù)終端的可信環(huán)境 。然后 shell 命令為用戶把進(jìn)程憑證和環(huán)境重 新設(shè)置為缺省值,并執(zhí)行用戶的初始程序。 ( 2) Linux 下的 shell 工具可以使 命令重新初始化用戶的登錄會(huì)話。 gcc 隨著自由開發(fā)者的加入和 gcc 自身的發(fā)展,已經(jīng)能編譯很多的語(yǔ)言了,比如 C、 C++、 JAVA 等等。同時(shí) C 語(yǔ)言兼容于多種操作系統(tǒng),比如 windows,linux,unix,dos 等,因此我采用 C 語(yǔ)言作為開發(fā)語(yǔ)言 [5]。%10; ( 6) IP 連接數(shù)可隨意控制; ( 7) 可進(jìn)行斷點(diǎn)續(xù)傳。 獲得文件大小 FTP 服務(wù)器 登錄模塊 目錄操作 文件操作 文件傳輸模塊 工作模式 監(jiān)控模塊 本地用戶登錄 匿名用戶登錄 創(chuàng)建目錄 刪除目錄 重命名目錄 返回工作目錄 改變工作目錄 列出詳細(xì)清單 刪除文件 重命名文件 上傳文件 下載文件 斷點(diǎn)續(xù)傳文件 住的模式 被動(dòng)模式 統(tǒng)計(jì)長(zhǎng)傳下載的個(gè)數(shù) 限制上傳下載速度 限制單 IP和總的連接數(shù) 福州大學(xué)陽(yáng)光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 4 表 22 基于 Linux的 FTP 服務(wù) 器功能列表 模塊 功能 說(shuō)明 登錄模塊 本地用戶登錄驗(yàn)證及權(quán)限管理 匿名用戶登錄及權(quán)限管理 匿名用戶目錄限制在 /var/ftp 目錄底下, 不能訪問(wèn)其它目錄 目錄操作 添加目錄 MKD 或 XMKD 文件操作 刪除目錄 RMD 或 XRM
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1