亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

關(guān)于開源項目——C語言實現(xiàn)FTP服務(wù)器的結(jié)構(gòu)解析

來源:znzxc 發(fā)布時間:2018-11-21 15:22:44 閱讀量:1106

針對此開源項目的說明,結(jié)構(gòu)分析。


 服務(wù)端整體框架:


1.     從命令行輸入得到服務(wù)端綁定端口號


2.     設(shè)置套接口選項,創(chuàng)建監(jiān)聽套接字。


3.     用while循環(huán) + fork實現(xiàn)子進(jìn)程與客戶端的交流。


4.     父進(jìn)程的交流套接字關(guān)閉,子進(jìn)程的監(jiān)聽套接字關(guān)閉。


 


在子進(jìn)程與客戶端的交流中:


1.     發(fā)送220歡迎應(yīng)答碼。


2.     接收客戶端傳來的用戶名、密碼信息,與文件的內(nèi)容相比對,如果有,則認(rèn)證成功,發(fā)送230應(yīng)答碼;失敗發(fā)送430應(yīng)答碼,并退出。


3.     循環(huán)處理用戶的請求,接收客戶端傳來的命令,此項目提供如下命令的解析。接收到USER,PASS,LIST,RETR則發(fā)送應(yīng)答碼200,收到QUIT發(fā)送應(yīng)答碼221(),其他命令視為無效命令。


4.     如果應(yīng)答碼為200,繼續(xù)處理。采用被動模式,客戶端創(chuàng)建監(jiān)聽套接字等待服務(wù)端主動連接,建立數(shù)據(jù)連接,之前建立的是控制連接。


5.     如果接收到LIST命令,將當(dāng)前目錄重定向到文件中,在數(shù)據(jù)連接中發(fā)送文件中的內(nèi)容,發(fā)送成功后,在控制連接中發(fā)送應(yīng)答碼226,關(guān)閉數(shù)據(jù)連接;


如果接收到RETR命令,則打開文件,在數(shù)據(jù)連接中傳送文件,發(fā)送成功后,在控制連接中發(fā)送應(yīng)答碼226,關(guān)閉數(shù)據(jù)連接。


 


客戶端整體框架:


1.     從命令行輸入得到服務(wù)器主機(jī)名和端口號。


2.     通過getaddrinfo得到期望的返回類型信息的暗示,實現(xiàn)主機(jī)名和服務(wù)器名轉(zhuǎn)換成套接口地址結(jié)構(gòu)的功能,與服務(wù)端進(jìn)行連接。


3.     輸入用戶名、密碼進(jìn)行驗證。


4.     發(fā)送命令到服務(wù)器,接收服務(wù)器返回應(yīng)答碼,如接收到221,則退出;接收到502,則顯示不合法的輸入;接收到200,處理命令。


接收到200,打開數(shù)據(jù)連接,客戶端創(chuàng)建監(jiān)聽套接字,在之前的控制連接上發(fā)送一個ACK確認(rèn),接收服務(wù)器的連接,關(guān)掉監(jiān)聽套接字。如果是LIST命令,先通過控制連接接收服務(wù)器傳來的消息,在通過數(shù)據(jù)連接打印出目錄,最后接收服務(wù)器傳來完成的消息,關(guān)閉數(shù)據(jù)連接。如果是RETR命令,打開文件失敗返回錯誤碼550,關(guān)閉數(shù)據(jù)連接進(jìn)行下一個循環(huán);文件存在則通過數(shù)據(jù)連接寫入文件,關(guān)閉數(shù)據(jù)連接。

--------------------- 



標(biāo)簽: 服務(wù)器搭建
分享:
評論:
你還沒有登錄,請先