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

正文內(nèi)容

畢業(yè)論文基于linux的ftp服務(wù)器的研究與實(shí)現(xiàn)-閱讀頁

2024-11-27 20:55本頁面
  

【正文】 令 創(chuàng)建套接字 SOCKK 創(chuàng)建套接字接收客戶端的連接 返回值 data_conn_sock 為創(chuàng)建的新連接返回的套接字 綁 定 是否成功 監(jiān)聽 返回值創(chuàng)建的新連接返回的套接字 開始 結(jié)束 福州大學(xué)陽光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 14 我下面要講的重點(diǎn)內(nèi)容。最后結(jié)束的時(shí)候是對(duì)共享內(nèi)存的空間進(jìn)行操作。 單 IP 連接數(shù)和總連接數(shù)的控制實(shí)現(xiàn) 對(duì)單 IP 連接數(shù)和總 IP 連接數(shù)的控制主要是 為了系統(tǒng)資源的安全性的一個(gè)考慮,同時(shí)也會(huì)局域網(wǎng)里面提供了一個(gè)很大的方便。 因?yàn)橥慌_(tái)機(jī)器上的進(jìn)程間進(jìn)行通信數(shù)據(jù)不需要在不同的進(jìn)程間復(fù)制,因此是同一臺(tái)機(jī)器上的進(jìn)程間進(jìn)行通信最快的方式。在 Linux 系統(tǒng)下得到共享內(nèi)存常用的方式是通過 shmXXX 函數(shù)族來實(shí)現(xiàn)利用共享內(nèi)存進(jìn)行存儲(chǔ)的。它的原型是 int shmget(key_t key, int size, int flag),執(zhí)行這個(gè)函數(shù)后系統(tǒng)會(huì)按照請(qǐng)求分配 size 大小的內(nèi)存用作共享內(nèi)存,返回值是一個(gè)非負(fù)整數(shù)的標(biāo)識(shí)符,因此對(duì)一個(gè)消息隊(duì)列發(fā)送消息時(shí)只要引用標(biāo)識(shí)符就可以了。在這里的參數(shù)“ NULL” 意味著系統(tǒng)選擇可分配的地址 , 如果寫固定地址的話一定要保證該地址未被分配出去,就算未被分配出,寫的地址也一定是該處填的地址的整數(shù)倍或映射到與內(nèi)存頁相對(duì)齊的位置 。使用共享存儲(chǔ)來實(shí)現(xiàn)進(jìn)程間通信的注意點(diǎn)是對(duì)數(shù)據(jù)存取的同步,必須確保當(dāng)一個(gè)進(jìn)程去讀取數(shù)據(jù)時(shí),它所想要的數(shù)據(jù)已經(jīng)寫好了。另外,可以通過使用 shmctl 函數(shù)設(shè)置共享存儲(chǔ)內(nèi)存的某些標(biāo)志位 [12]。其主要作用是滿足互斥條件,實(shí)現(xiàn)共享資源的獨(dú)占使用,而且標(biāo)志某時(shí)間的發(fā)生,最后是使兩個(gè)任務(wù)的行為同步。 ( 2) 若此信號(hào)量的值為正,則允許進(jìn)行使用該資源,進(jìn)程將信號(hào)量減 1。 ( 4) 當(dāng)進(jìn)程不再使用一個(gè)信號(hào)量控制的資源時(shí),信號(hào)量值加 1。維護(hù)信號(hào)量狀態(tài)的是 Linux 內(nèi)核操作系統(tǒng)而不是用戶進(jìn)程。 [13] 因?yàn)楫?dāng)可進(jìn)程退出的時(shí)候系統(tǒng)會(huì)發(fā)出一個(gè) SIGCHLD 的信號(hào),要實(shí)現(xiàn)限制單 IP 連接數(shù)的,我們就必須知道每 IP 當(dāng)前的連接數(shù)。綜上所述可得哈希表的圖解如 46;信號(hào)響應(yīng)的處理流程如 47 所示;服務(wù)器要 IP 總連接數(shù)和單 IP 連接數(shù)的控制過程的流程圖在附件中。比如對(duì)于目錄操作模塊,主要調(diào)用到chdir,rmdir 及 rename 等函數(shù),而文件操作模塊則主要 remove,access ,lseek,open, close,fseek,ftell 等等一些對(duì)文件操作的函數(shù)的運(yùn)用,登錄模塊中則是對(duì) 一些諸如getpwnam, setegid, seteuid, getspnam 等等函數(shù)的運(yùn)用。 調(diào)試過程及結(jié)果 調(diào)試過程 調(diào)試主要的步驟是首先將要編譯的文件用特殊的文件格式寫到 makefile 文件里面。然后輸入 make install 把配置文件,腳本以及完全編譯通過的可執(zhí)行文件復(fù)制對(duì)于的系統(tǒng)文件夾中。 調(diào)試結(jié)果 ( 1) 服務(wù)器的啟動(dòng) 在 Linux 下輸入腳本命令 service hfftpd start 就會(huì)開啟服務(wù)器如圖 51 所示。 圖 51 服務(wù)器的啟動(dòng) 基于 Linux的 FTP 服務(wù)器 17 ( 2) 限制每 IP 連接最大數(shù)及總 IP 連接數(shù); 在配置文件中只要隨意改你所想要控制的數(shù)即可。配置文件如 52 所示。 圖 53 用戶名密碼登錄模式設(shè)置 福州大學(xué)陽光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 18 圖 54 匿名登錄模式 ( 4)客戶端的主動(dòng)被動(dòng)模式設(shè)置如下圖所示。 55 被動(dòng)模式登陸 基于 Linux的 FTP 服務(wù)器 19 ( 5)客戶端登陸結(jié)果如下圖所示。在課題中我除了實(shí)現(xiàn)普通 FTP 服務(wù)器所具有的登陸模塊、目錄操作模塊,文件操作模塊,數(shù)據(jù)傳輸模塊之外,還增加了一個(gè)監(jiān)控模塊的內(nèi)容。這些都使得本課題所實(shí)現(xiàn)的 FTP 服務(wù)器在客戶的應(yīng)用體驗(yàn)上和數(shù)據(jù)安全方面具有進(jìn)一步的提高。這樣就可以進(jìn)一步的提高服務(wù)器的兼容性。上傳壓縮可以節(jié)省上傳的空間,使得同一空間可以有更多的資料供用戶下載。 ( 3) FTP 不要使用 root 權(quán)限,因?yàn)槿f一遇到提權(quán) 0DAY 就會(huì)很不堪設(shè)想。因此如果 FTP 只使用 root 權(quán)限,服務(wù)器的安全性就會(huì)受到非常嚴(yán)重的威脅。建議使用PureFTPd。其代碼經(jīng)過反復(fù)的審計(jì),并對(duì)新型的漏洞進(jìn)行過很多研究及探討 [15]。 struct sockaddr_in cliaddr。 char *tempppp。 int conf_ipcount。//hash int nowcounts,nowipcount。//配置文件散列表初始化 hash_fun_init()。//創(chuàng)建套接口 重用綁定偵聽 nowservermax=atoi((char *)hash_getval(hash_conf,servermax,1))。 signal(SIGHUP,sighup_handler)。 create_shm_sem()。) { socklen_t cliaddrlen=sizeof(cliaddr)。cliaddr,amp。 if (connfd0amp。errno==EINTR) { perror(accept)。 基于 Linux的 FTP 服務(wù)器 23 } tempppp=i_ntoa()。//取出共享內(nèi)存里當(dāng)前連接數(shù) if (nowcounts=nowservermax)//如果大于最大連接數(shù) continue { sleep(3)。 close(connfd)。 } temppp=(char *)hash_getval(hash_ip_count,tempppp,1)。 else nowipcount=atoi(temppp)。 if(nowipcount=conf_ipcount) { sleep(3)。 close(connfd)。 } pid=fork()。 case 0://子進(jìn)程執(zhí)行 client_session()會(huì)話期 ,轉(zhuǎn)會(huì)話期查看 close(listenfd)。 client_session()。 福州大學(xué)陽光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 24 break。 char tmp[20]。 hash_insert(hash_uid_ip,tmp,i_ntoa(),NULL,1)。 test_max_count(1)。 } } } 基于 Linux的 FTP 服務(wù)器 25 附錄二 守護(hù)進(jìn)程程序 函數(shù)功能 :創(chuàng)建守護(hù)進(jìn)程 參數(shù) : 返回值 :無 void mydaemon(int closed,int ischdir) { int i。 pid = fork()。 else if(pid0) exit(0)。//創(chuàng)建新的會(huì)話期 pid = fork()。 else if(pid0) exit(0)。i=2 。 } } if (ischdir == 1) { chdir(/)。} 福州大學(xué)陽光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 26 附錄三 主動(dòng)被動(dòng)模式測(cè)試程序 函數(shù)功能 :測(cè)試 PASV 或 PORT 參數(shù) :無 返回值 :數(shù)據(jù)連接套接口 int test_pasv_or_port() { struct sockaddr_in cli_addr。 int sockk。 //客戶端地址 memset(amp。 =AF_INET。 =i_addr(port_ip)。ser_addr,0,sizeof(ser_addr))。 =htons(20)。 set_euid_egid(root,0)。 sockk=socket(AF_INET,SOCK_STREAM,0)。opt,sizeof(opt))。cli_addr,addrlen)。cli_addr,addrlen)。 data_conn_sock=sockk。 基于 Linux的 FTP 服務(wù)器 27 } else if(strcmp(up_,PASV)==0) { socklen_t cliaddr_llen=sizeof(cli_addr)。cli_addr,amp。 if(data_conn_sock==1) perror(pasv sock)。 } 福州大學(xué)陽光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 28 附錄四 計(jì)算上傳下載實(shí)時(shí)速度程序 函數(shù)功能 :測(cè)試 PASV或 PORT 參數(shù) :信號(hào)編號(hào) 返回值 :數(shù)據(jù)連接套接口 void alrm_handl(int signum) { struct timespec req。//計(jì)算實(shí)時(shí)速度 float speed_now。 float mytime。//進(jìn)行 KB 轉(zhuǎn) BYTE if(speed_nowlimit_speed)//如果時(shí)速比配置文件的大就休眠 1 秒 { memset(amp。 mytime=transfer_data/。 =(int)temp_time。 if(0) =0。req,NULL)。 return。} 基于 Linux的 FTP 服務(wù)器 29 附錄五 IP總連接數(shù)和單 IP連接數(shù)的控制過程的流程圖 否 是 是 否 否 是 是 否 圖 48 IP 總連接數(shù)和的控制流程圖 開始 是否有客戶端連接 得到客戶端的 IP 地址 該 IP 地址是否存在 判斷否其大于客戶端最大連接 把 IP 加入第二張表并把當(dāng)前連接數(shù)置 為 1 判斷 IP 單連接是否其大于每 IP 最大連接 向客戶端發(fā)送已超過信息 把第二張表對(duì)應(yīng)的連接數(shù)置加 1 創(chuàng)建子進(jìn)程 進(jìn)程號(hào)和 IP地址插入第一張表 結(jié)束 福州大學(xué)陽光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 30 致謝 首先感謝導(dǎo)師林文忠老師,在此次的畢業(yè)設(shè)計(jì)中對(duì)本不厭其煩和悉心的指導(dǎo)。最后感謝本同學(xué),在設(shè)計(jì)過程中給我提供了一些寶貴的幫助
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1