linux下文件传输项目,linux文件传输项目文档.doc

linux文件传输项目文档

局域网文件传输系统项目说明

需求说明:

1,开发平台

linux x86 64

支持Debian Ubuntu

支持rhel,centos,Fedora

2,功能说明

文件上传与下载,讲指定文件上传到服务器,或从服务器下载文件到指定位置

文件浏览,浏览本地文件以及服务器端文件

概要

功能说明

客户端

主要任务:

分析用户输入的命令

根据命令向服务器端发出请求

等待服务器返回的结果 表1_1 命令含义与请求码

用户输入的命令命令含义对应的请求码get从服务器得到文件GETput向服务器传输文件PUTcd进入客户端的目录不需要与服务端通信,因此无请求!cd进入服务器端目录CDls列出客户端当前的内容不需要与服务端通信因此无请求!ls列出服务器端当前的内容LSconnect连接服务器发出连接请求,不需要服务器额外处理bye退出程序BYE 表1_2 命令的格式

命令的名称格式说明getget arg1 arg2。 arg1:源文件 arg2:本地路径。 arg1,arg2都是绝对路径putput arg1 arg1。arg1:本地文件 arg1:目标路径。 arg1 arg2都是绝对路径!cd!cd arg1。 arg1:指定的服务器目录。绝对路径!ls!ls arg1。 arg1:指定的目录。绝对路径connect connect arg1。 arg1:点分十进制IP地址cdcd arg1。 arg1:客户端的指定目录,绝对路径lsls arg1。 arg1:客户端指定目录,绝对路径byebye。

服务器端

主要任务

分析请求代码

根据请求代码做相应的处理

等待返回结果或者应答信息

表1_3请求码与相应处理

请求代码对应的处理GET向客户端传输文件PUT接受客户端的文件CD进入目录LS将当前目录内容传输给客户端BYE断开连接

通信协议与服务器模型:

本项目通信协议分两种

对于get命令和!ls命令这些需要传输文件内容的命令(!ls需要传输列出的目录文件列表),采用四次握手的通信协议

如图1_1所示 图1_1 四次握手通信协议

以get命令举例,get命令首先发出get请求,服务器程序接收到请求后,发送请求的文件长度或者错误应答码,接收到文件长度后客户端发送RDY应答信息,服务器端开始传输文件内容

对于!CD命令这种不需要传输文件内容的命令采取两次握手通信协议,如图1_2所示 图1_2 两次握手通信协议 本项目服务器采用多线程并发服务器模型,提供和客户端的交互。

3,源代码目录结构 Svr ├───common.h 总领整个服务器程序的头文件 ├───command.h 定义命令处理函数和初始化函数头文件 ├───command.c 定义命令处理函数和初始化函数 ├───main.c 定义程序主干函数 └───makefile Cli ├───common.h 总领整个服务器程序的头文件,常用文件皆放此 ├───command.h 定义命令处理函数和初始化函数头文件 ├───command.c 定义命令处理函数和初始化函数 ├───main.c 客户端主干函数. ├───input.c 定义命令分解函数,用于处理用户输入的命令 └───makefile

4,核心函数及数据结构定义 4.1 客户端 int do_connect char *ip, int *sock_fd ; 与服务器端进行连接 int do_get const char *src, const char *dst, int sock_fd ;从远端服务器下载文件 int do_put const char *src, const char *dst, int sock_fd ;向远端服务器上传文件 int do_cd char *path ;进入当前主机指定目录 int do_ls char *path ; 列出当前主机指定目录下的内容 int do_serv_cd char *path, int sock_fd ;进入远端服务器指定目录 int do_serv_ls char *path, int sock_fd ;列出当前服务器目录信息 int bye int sock_fd ;退出服务器,关闭连接 int split struct commamd_line, char line[] ;拆分命令相关函数

struct command_line char *name; 命令的名称 char *argv[MAX_ARG]; 命令携带的参数 ;

MAX_LINE 1024 向服务器端发送命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值