ftp伺服器專案

2021-10-19 20:19:11 字數 2692 閱讀 1949

**位址

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客戶端 ...