#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...