一个简单的文件共享工程 -- 功能概述
2012-06-03 12:51
501 查看
服务器管理一个目录,远程客户端可以对这个目录进行几个简单的命令(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:
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>:
相关文章推荐
- 一个简单的文件共享工程 -- TMServer
- 一个简单的文件共享工程 -- TMClient
- 一个简单的文件共享工程 -- FileServer
- 一个简单的文件共享工程 -- FileClient
- 一个简单的文件共享工程 -- 总结
- 一个简单的文件共享工程 -- Head
- 教你如何将工程中的一个功能模块提取成library库文件,供其他工程轻松接入,只需简单5步
- 一个简单的文件共享工程 -- TConnection
- 共享文件夹—— 一个实现Mac与PC互传文件,维护同一个文件夹简单的方法
- 使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传
- 基于Java的一个简单的文件上传下载功能
- 创建一个Android程序(简单介绍工程里面各个文件的作用)
- 创建一个Android程序(简单介绍工程里面各个文件的作用)
- 用VC6.0做了一个文件监视器,简单监视新建、删除和修改文件功能
- 基于Java的一个简单的文件上传下载功能
- 一个共享XP、2003上文件与打印机简单易行的方法
- 在FPGA中简单的建立一个工程,并编写测试文件
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- QT4 一个简单的打开文件功能