**位址
1. 簡介
2. 具體實現
2.1 服務端
主要負責處理客戶端發來的指令,對於複雜指令即比較耗時的指令(get, put)用子執行緒進行處理,其餘指令用主線程處理
2.1.1 執行緒池
主要分為執行緒池的建立和啟動
// 定義單個任務
typedef
struct node node_t,
*pnode_t;
// 定義任務佇列
typedef
struct que que_t,
*pque_t;
// 定義執行緒池
typedef
struct factory factory_t,
*pfactory_t;
void
factoryinit
(pfactory_t p,
int capacity,
int threadnum)
;void
factorystart
(pfactory_t p)
;
2.1.2 指令處理int
signincmd
(int
,char*,
char
*, mysql*
,int);
intlogincmd
(int
,char*,
char*,
char*,
char
*, mysql*
, mysql_res*
, client_t*
,int);
void
pwdcmd
(int
,char*)
;void
mkdircmd
(int
,char*,
char*,
int,
char
*, mysql*
, mysql_res*);
void
lscmd
(int
,char*,
char
*, mysql*
, mysql_res*
,int
,char*)
;void
cdcmd
(int
,char*,
char
*, mysql*
, mysql_res*
, client_t*
,int);
intrmcmd
(int
,char*,
char
*, mysql*
, mysql_res *res,
char*)
;
對於get/put指令if(
strncmp
(buf,
"put",)
==0||strncmp
(buf, get",3)
==0)strcpy
(pnewtask->filename, buf +4)
;pthread_mutex_lock
(&pque->mutex)
; ret =
queinsert
(pque, pnewtask)
;pthread_mutex_unlock
(&pque->mutex);if
(ret !=-1
)}2.1.3 資料庫操作
服務端需要維護多個使用者的檔案情況,採用虛擬檔案表,其中preno表示所處資料夾的序號,no表示檔案編號,md5為檔案的md5值,filesize為檔案大小,若為資料夾則filesize=4096,filetype為0代表資料夾,為1代表檔案;此外還有一張使用者資訊表,維護使用者資訊
preno
nofilename
owner
md5filesize
filetype-11
test
root
0000
4096
0涉及到資料庫操作的指令主要有signin、put、mkdir、rm
2.2 客戶端
客戶端的邏輯與服務端類似,對於get/put耗時命令,建立子執行緒進行處理;windows版本的客戶端目前還存在很多問題
3. mmap
服務端接收/傳送檔案均運用了mmap技術,linux客戶端亦是,windows客戶端用的是普通方法
4. 編譯&&執行
編譯使用makefile檔案;執行客戶端程式後,首先註冊(signin username@passwd),然後登入(login username@passwd),登入成功後即可執行其他命令
5. windows下gcc編譯可執行程式新增圖示
首先將.ico檔案與**檔案放置在同一目錄下,並新建一.rc檔案
1 icon "filename.ico"
// 開啟命令終端
windres -i icon.rc -o icon.o
// 最後與源**編譯即可
gcc code.c icon.o -o
專案五 FTP伺服器配置
專案五 ftp伺服器配置 ftp file transfer protocol,檔案傳輸協議 是 tcp ip 協議組中的協議之一。ftp協議包括兩個組成部分,其一為ftp伺服器,其二為ftp客戶端。其中ftp伺服器用來儲存檔案,使用者可以使用ftp客戶端通過ftp協議訪問位於ftp伺服器上的資源。...
更換伺服器專案FTP
做前端的都知道,對於初級前端來說 也就是做完專案交給公司後台,後台會將你的專案放置在公司伺服器上,通常有時候會做出一些調整,所以就需要改動專案,改動完的專案你需要在交給後台,後台上傳。我是同事跟我說的直接使用工具也可以自己上傳,window系統也可以通過我的電腦 連線伺服器進行更改專案 window...
web伺服器和ftp伺服器
web伺服器又稱網路伺服器,http伺服器 伺服器的精髓就是你想在我這看到東西,裡面放一堆網頁,你向我傳送請求,我就找找找,把網頁給你。web伺服器使用的協議是http https 客戶機叫http客戶端 瀏覽器就叫http客戶端 8uftp就叫ftp客戶端 每天都獲取位址,電腦上有dhcp客戶端 ...