服务器管理一个目录,远程客户端可以对这个目录进行几个简单的命令(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>:

本文详细介绍了服务器如何管理目录,并与远程客户端通过简单命令(如ls, cd, mkdir等)进行交互,同时讨论了大数据量文件上传/下载对客户端响应的影响及交互协议细节。

被折叠的 条评论
为什么被折叠?



