基於TCP協議的簡易FTP雲盤(客戶端)

2021-10-14 09:39:32 字數 2577 閱讀 2334

#include

#include

#include

#include

#include

#include

#include

#include

#include

"msg.h"

intget_cmd_type

(char

*cmd)

//將命令字串轉換成整數

char

*getdir

(char

*cmd)

//分離引數

intcmd_handle

(struct msg msg,

int fd)

//命令處理

else

break

;case lls:

//當為lls指令時,在客戶端呼叫ls即可

system

("ls");

//system函式呼叫完ls後,將自動列印輸出結果

break

;case lpwd:

//當為lpwd指令時,在客戶端呼叫pwd即可

system

("pwd");

//system函式呼叫完pwd後,將自動列印輸出結果

break

;case lcd:

//當為lcd指令時,分離得出路徑名,呼叫chdir函式改變客戶端當前路徑

dir=

getdir

(msg.cmd)

;chdir

(dir)

;break

;case quit:

//當為quit指令時,將訊息傳送給伺服器,然後關閉fd,結束客戶端

strcpy

(msg.cmd,

"quit");

write

(fd,

&msg,

sizeof

(msg));

close

(fd)

;exit(-

1);}

return ret;

}void

handle_server_msg

(int c_fd,

struct msg msg)

//當接受到ls,get、pwd等指令時,客戶端處理伺服器傳送來的訊息

elseif(

strstr

(msg.cmd,

"get"))

//當指令為get時執行

else

}int

main

(int argc,

char

**ar**)

// int socket(int domain, int type, int protocol);

c_fd=

socket

(af_inet,sock_stream,0)

;if(c_fd==-1

) c_addr.sin_family=af_inet;

c_addr.sin_port=

htons

(atoi

(ar**[2]

));inet_aton

(ar**[1]

,&c_addr.sin_addr)

;connect

(c_fd,

(struct sockaddr *

)&c_addr,

sizeof

(struct sockaddr))==

-1)//connect函式連線伺服器,連線失敗則返回-1

printf

("connect...\n");

//連線成功列印connect...

int mark=0;

while(1

) mark=1;

int ret=

cmd_handle

(msg,c_fd)

;//命令處理函式

if(ret>ifgo)

//ifgo的值為3,即指令為lcd、lls、cd、put、quit、lpwd時,列印》,然後重新迴圈,下面語句不執行

if(ret==-1

)//如果命令處理函式返回的值為-1,則說明該命令不存在

handle_server_msg

(c_fd,msg)

;//當接受到ls,get、pwd等指令時,客戶端處理伺服器傳送來的訊息

}return0;

}

該ftp雲盤實現了以下功能:

ls:檢視服務端當前路徑下的所有檔案;

lls:檢視客戶端當前路徑下的所有檔案;

cd xx:服務端進入xx路徑;

lcd xx:客戶端進入xx路徑;

pwd:檢視服務端當前路徑;

lpwd:檢視客戶端當前路徑;

get xx:從服務端當前路徑獲取xx檔案到客戶端當前路徑上;

put xx:將客戶端當前路徑xx檔案傳送到服務端當前路徑;

quit:斷開客戶端連線;

客戶端**編寫:大部分和服務端相同,主要是新增了lls、lcd、lpwd等對客戶端本地執行的指令。

師傅——上官可程式設計陳立臣。

基於tcp協議的socket

serve服務端 import socket sk socket.socket 例項物件 sk.bind 127.0.0.1 8080 集合內設定ip和埠,利用bind方法 sk.listen 監聽資訊 conn,addr sk.accept 接受到資訊 while true ret conn.re...

基於HTTP實現簡易的個人網盤

隨著網際網路的發展,對於檔案的儲存和獲取都可以通過網路來實現,例如通過網盤。使用者可以把網盤看成乙個放在網路上的硬碟或u盤,不管你是在家中 單位或其它任何地方,只要你連線到網際網路,你就可以管理 編輯網盤裡的檔案。不需要隨身攜帶,更不怕丟失。可以通過網頁檢視當前網盤中的資源,以html頁面的形式展現...

基於TCP協議的C S通訊

一 環境 os win10 ide visual studio 2010 二 在同一解決方案下新建兩個win32控制台應用程式,專案名分別是server和client,分別在兩個專案的原始檔下新增server.cpp和client.cpp server.cpp include include inc...