服务器管理一个目录,远程客户端可以对这个目录进行几个简单的命令(ls,cd,mkdir,touch,rm,download,upload),客户端不可以操作共享目录以外的东西。
服务器用的是多路复用实现的,没有用多线程,多进程;所以,如果一个客户端在上传或下载大数据量的文件时,就不能对别的客户端及时响应。
交互协议如下:
ls:
client>:
>> ls >> directory
server>:
while true:
>> last_package(unsigned char) >> some_message(string)
if last_package is 1:
break
cd:
client>:
>> cd >> directory
server>:
if success >> (nothing)
else >> some_message(string)
mkdir:
client>:
>> mkdir >> directory
server>:
if success >> (nothing)
else >> some_message(string)
touch:
client>:
>> touch >> file
server>:
if success >> (nothing)
else >> some_message(string)
rm:
client>:
>> rm >> file/directory
server>:
if success >> (nothing)
else >> some_message(string)
dl:
client>:
>> dl >> file/directory
server>:
while true:
>> flag(unsigned char)
if flag is sndfile:
>> filename(string)
else if flag is snddir:
>> directoryname(string)
else if flag is sndtxt:
>> filecontent(bytes)
else if flag is done:
>> some_message(string)
break
ul:
client>:
>> dl
while true:
>> flag(unsigned char)
if flag is sndfile:
>> filename(string)
else if flag is snddir:
>> directoryname(string)
else if flag is sndtxt:
>> filecontent(bytes)
else if flag is done:
>> some_message(string)
break
server>: