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

正文內(nèi)容

一個(gè)基于linux的ftp系統(tǒng)畢業(yè)論文(參考版)

2024-11-16 16:04本頁(yè)面
  

【正文】 順利如期。以往編程時(shí),不注意編程規(guī)范,致使程序運(yùn)行不出來,現(xiàn)在在編寫程序時(shí)很注意編寫規(guī)范,以前一些控件不會(huì)使用,現(xiàn)在也都可以熟練使用了, 在設(shè)計(jì)過程中一些 功能的實(shí)現(xiàn) 讓我很頭痛,原因是由于本身設(shè)計(jì)受到 編程語言的限制 ,而又必須考慮本專業(yè)的一些要求規(guī)范,從而形成了一些矛盾點(diǎn),這些矛盾 在處理上讓人很難斟酌,正是基于這種考慮我意識(shí)到 , 要 想 更完美的進(jìn)行一次設(shè)計(jì),與他人的交流溝通是很有必要的 。 雖然畢業(yè)設(shè)計(jì)內(nèi)容繁多,過程繁瑣但我的收獲卻更加豐富。而且這個(gè)服務(wù)器不可以匿名登陸所以當(dāng)客戶端匿名登陸時(shí)無法與服務(wù)器連接,只有用有效的用戶名才可以與服務(wù)器建立連接。首先因?yàn)閯?chuàng)建的是服務(wù)器端,所以先登陸自己的服務(wù)器,為了查看服務(wù)器是否能夠運(yùn)行,又配置來了一個(gè)客戶端,在二臺(tái)電腦中實(shí)現(xiàn)客戶端與服務(wù)器端之間文件的傳輸。測(cè)試員根據(jù)代碼檢查結(jié)果判斷或多或可能出錯(cuò)的數(shù)目,并據(jù)此定制測(cè)試 [8]。他不知道軟件如何運(yùn)行,為什么會(huì)這樣,只知道程序做了什么。 1)黑盒測(cè)試 在黑盒測(cè)試中,軟件測(cè)試員只要知道軟件要做什么 —— 而無法看到盒子里的軟件是如何運(yùn)行的。具體為: 1) 當(dāng)客戶端與服務(wù)器建立連接時(shí),有時(shí)連接較慢。 ssize_t recv(int sockfd, void *buf, size_t len, int flags)。 綁定服務(wù)器的 ip 和端口號(hào) int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)。 } 客戶端主函數(shù)流程如下: Int main() { int socket(int domain, int type, int protocol)。 ssize_t send(int sockfd, const void *buf, size_t len, int flags)。 }elseif(pid == 0) { Close(listen_socket)。 pid = fork(); if(pid 0) { Perror(“fork”)。 綁定服務(wù)器的 ip 和端口號(hào) int listen(int sockfd, int backlog)。該函數(shù)創(chuàng)建一個(gè)進(jìn)程,并返回進(jìn)程 ID 號(hào) 服務(wù)器主函數(shù)流程如下: Int main() { int socket(int domain, int type, int protocol)?;蛘呤褂枚鄠€(gè)進(jìn)程,讓每一個(gè)進(jìn)程處理一個(gè)客戶端的請(qǐng)求。 void FD_ZERO(fd_set *set)。 int FD_ISSET(int fd, fd_set *set)。 /* Code to deal with ining connection(s)... */ /* When no longer required, the socket pathname, MY_SOCK_PATH should be deleted using unlink(2) or remove(3) */ } 這個(gè)示例 是從創(chuàng)建 socket 然后 bind 綁定 到 listen 監(jiān)聽 該項(xiàng)目服務(wù)器是要處理多的客戶端的服務(wù)器所以我們會(huì)使用多進(jìn)程編程,或使用 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)。peer_addr_size)。 cfd = accept(sfd, (struct sockaddr *) amp。 if (listen(sfd, LISTEN_BACKLOG) == 1) handle_error(listen)。 if (bind(sfd, (struct sockaddr *) amp。 /* Clear structure */ = AF_UNIX。 memset(amp。 sfd = socket(AF_UNIX, SOCK_STREAM, 0)。 struct sockaddr_un my_addr, peer_addr。 exit(EXIT_FAILURE)。 也可以使用標(biāo)準(zhǔn)的文件的寫函數(shù) ssize_t write(int fd, const void *buf, size_t count)。 ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)。 也可以使用標(biāo)準(zhǔn)的文件的讀函數(shù) ssize_t read(int fd, void *buf, size_t count)。 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)。 int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)。 sockfd socket 描述符 backlog 監(jiān)聽的數(shù)目 監(jiān)聽函數(shù) 開始監(jiān)聽客戶端的連接 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)。 char sa_data[14]。 domain 協(xié)議族信息 type 協(xié)議類型 protocol 所說是用的協(xié)議 這個(gè)函數(shù)創(chuàng)建一個(gè) socket 返 回一個(gè) socket 文件描述符 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)。 編程中主要用的的函數(shù)或庫(kù)。客戶端向服務(wù)器發(fā)送 PASV 命令告訴服務(wù)器進(jìn)行被動(dòng)連接,服務(wù)器就受到此命令就會(huì)向服務(wù)器發(fā)送一個(gè) port 命令告訴客戶端服務(wù)器此時(shí)監(jiān)聽的端口號(hào),讓客戶端來連接。 4).服務(wù)器的大于 1023 端口到遠(yuǎn)程的大于 1023 的端口(出;服務(wù)器發(fā)送 ACK響應(yīng)和數(shù)據(jù)到客戶端的數(shù)據(jù)端口 S?C) 。 2).服務(wù)器的 21 端口到任何大于 1023 的端口(服務(wù)器響應(yīng)到客戶端的控制端口的連接 S?C) 。然后客戶端發(fā)起從本地端口 N+1 到服務(wù)器的端口 P的連接用來傳送數(shù)據(jù)。第一個(gè)端口連接服務(wù)器 的 21 端口,但與主動(dòng)方式的 FTP 不同,客戶端不會(huì)提交 PORT 命令并允許服務(wù)器來回連它的數(shù)據(jù)端口,而是提交 PASV 命令。 被 動(dòng)方式的 FTP 是這樣的 : 在被動(dòng)方式 FTP 中,命令連接和數(shù)據(jù)連接都由客戶端,這樣就可以解決從服務(wù)器到客戶端的數(shù)據(jù)端口的 進(jìn) 入方向連接被防火墻過濾掉的問題。這樣客戶端與服務(wù)器就會(huì)連接起來了。 這是問題之一,如果你在客戶端開了防火墻的話的 ,那么采用這種方式,客戶端是不能與服務(wù)器正常的通信的。 FTP 的客戶端并沒有實(shí)際建立一個(gè)到服務(wù)器數(shù)據(jù)端口的連接,它只是簡(jiǎn)單的告訴服務(wù)器自己監(jiān)聽的端口號(hào),服務(wù)器再回來連接客戶端這個(gè)指定的端口。 ftp 實(shí)現(xiàn)中的主動(dòng)與被動(dòng)方式。如果是客戶端要下載文件,就向服務(wù)器發(fā)送 LOAD 命令并指定要下載的文件或目錄。執(zhí)行完畢客戶端與服務(wù)器之間的數(shù)據(jù)連接將關(guān)閉。服務(wù)器接收到客戶端的 LIST 名字,就會(huì)執(zhí)行,列表顯示指定的文件目錄及文件。比如,客戶端向服務(wù)器發(fā)送 LIST 命令,客戶 端負(fù)責(zé)檢查命令的合法性,而服務(wù)器不處理這些,這樣做就會(huì)大大減輕服務(wù)器的負(fù)擔(dān),而且客戶端還很靈活處理用戶的輸入的命令。當(dāng)客戶端要求服務(wù)器發(fā)送數(shù)據(jù)時(shí),客戶端就現(xiàn)在發(fā) PORT 名令,這是服務(wù)器就主動(dòng)和客戶端建立數(shù)據(jù)連接,并利用數(shù)據(jù)端口 20 向客戶端發(fā)送命令運(yùn)行結(jié)果。客戶端輸入命令服務(wù)器處理命令,并把處理后的結(jié)果返回給客戶端。 553:未執(zhí)行請(qǐng)求的操作:文件名不合法。 551:請(qǐng)求操作中止:頁(yè)類型未知。 532:存儲(chǔ)文件需要賬戶信息。 504:此參數(shù)下的命令功能未實(shí)現(xiàn)。 502:命令未實(shí)現(xiàn)。 500:格式錯(cuò)誤,命令不可識(shí)別。 451:中止請(qǐng)求的操作:有本地錯(cuò)誤。 426:關(guān)閉連接,中止傳輸。 421:不能提供服務(wù),關(guān)閉控制連接。 332:登錄時(shí)需要賬戶信息。 257:創(chuàng)建“ PATHNAME”。 230:用戶登錄。 226:關(guān)閉數(shù)據(jù)連接,請(qǐng)求的文件操作成功。 221:服務(wù)關(guān)閉控制連接,可以退出登錄。 215:名字系統(tǒng)類型。 213:文件狀態(tài)。 211:系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)。 200:命令成功。 125:數(shù)據(jù)連接已打開,準(zhǔn)備傳送。在這種情況下文本是確定的,它必須是: MARK yyyy=mmmm 其中 yyyy 是用戶進(jìn)程標(biāo)記, mmmm 是服務(wù)器標(biāo)記。 用戶名也可以使用匿名,如: USER anonymous,返回如: 331 Anonymous access allowed, send identity ( name) as password。 2).用戶名和密碼認(rèn)證 客戶端發(fā)送用戶名給服務(wù)器,如: USER he,如果服務(wù)器找到用戶名 he,將返回字符串,如: 331 User name okay, need password。若客戶端與服務(wù)器之間成功連接,服務(wù)器將返回字符串,如: 220 GMS ( Version )。一些操作如“進(jìn)入目錄”、“刪除文件”,依靠這個(gè) socket發(fā)送一條命令就可完成了。即發(fā)送 Ftp 命令 —— 接收返回的響應(yīng)信息 —— 分析該信息 —— 執(zhí)行相關(guān)操作 —— 發(fā)送下一條命令。 該 Ftp 客戶端工具用一個(gè) Winsocket 連接上 Ftp 服務(wù)器,然后向其發(fā)送命令。 3) .文件傳輸模塊 :主要完成主機(jī)與服務(wù)器連接成功以后文件的上傳與下載。 使用格式: CP spathname dpathname 第四章 系統(tǒng)設(shè)計(jì)與 實(shí)現(xiàn) 根據(jù)需求分析,按照系統(tǒng)開發(fā)的基本觀點(diǎn)對(duì)功能進(jìn)行分解,從功能上可對(duì)模塊作如下劃分: 1) .連接管理模塊 :主要完成主機(jī)與服務(wù)器之間的連接與關(guān)閉操作。 16).MV: 請(qǐng)求在服務(wù)器上為某一個(gè)指定的文件或文件夾重命名。 14).TOUCH:請(qǐng)求在服務(wù)器上新建一個(gè) 文件 ,這條命令帶一個(gè)參數(shù)指明要建立的 文件名 。 格式為 : PORT h1, h2, h3, h4, p1, p2 13) .CAT:命令顯示某一個(gè)文件的內(nèi)容。 11).MKO:請(qǐng)求在服務(wù)器上新建一個(gè)目錄,這條命令帶一個(gè)參數(shù)指明要建立的目錄名 。 格式為 : TYPE type 9).CMD: 請(qǐng)求更改服務(wù)器的當(dāng)前目錄這各命令帶一個(gè)參數(shù),參數(shù)表示要更改的目錄名 。 7) .WYWT: 請(qǐng)求服務(wù)器返回系統(tǒng)類型 。 5) .LOAD: 取得文件這條命令是 FTP 事務(wù)是用得最多的命令 , 在請(qǐng)求下載文件時(shí)都有會(huì)用到 。 4) .QUIT: 由于要求傳輸文件時(shí)有登陸的過程 , 斷開連接到應(yīng)有相應(yīng)的注銷過程 。 3) .LIST: [pathname] 參數(shù)表示要列文件的目錄 路 徑名 , 若不帶參數(shù) , 剛使用當(dāng)前目錄 。 格式為 : PASS password 當(dāng)服務(wù)器收到來自客戶端的 USER 命令后,檢查其合法后就像客戶端發(fā)提示信息要求輸入密碼,客戶端這是就可以向服務(wù)器發(fā)送 PASS命令加上 root 用戶的密碼。如: USER root 此命令是以 root 用戶登錄服務(wù)器。 服務(wù)器與客戶端原理圖分析: 一一實(shí)現(xiàn)程序服務(wù)器端實(shí)現(xiàn)的的
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1