文件传输项目文档

文件传输项目文档

1.ls

2.cd

对于切换目录这个功能做的不好的是没有在切换目录之后实现ls的功能,其他的pwd,exit也都实现了,这里就不再截图了。

3.上传and秒传

(1)用mysql新建立用户,创建数据库,表格,用来保存服务端现有文件的加密文件

(2)在客户端上传服务端没有的文件

在客户端打开的文件:


在服务端打开的文件:

上传前后发现数据库中多了一条记录

 

 并在服务端产生了一个上传上来的文件

(3)上传服务端已存在的文件file,(前提是客户端存在此文件),即秒传

查看服务端的文件列表,产生了软链接

这里要说明的是,在服务端产生的首次上传和非首次上传的文件名生成的方式是:文件名加时间,这样保证了上传在服务器的文件的唯一性,防止文件名冲突。(对于非首次上传的文件来说,文件名是服务端本来就有的文件,直接生成软链接,对于首次上传的文件来说,文件名是客户端上传的,但我做的美中不足的是不管服务端有没有要上传的文件,都要在服务端创建一个文件,用来创建软链接,以判断是否需要真正的上传文件)

贴ser.c代码:


至于数据库这部分是自己实现与服务端链接的API

首先写了一个程序,它的作用是给服务端所有文件加密,并将密码插入数据库,这里就不贴代码了。

然后,在数据库中查找密码的代码search.c

4.下载

总结:经过真真正正自己写一个项目,可谓大有收获,获益匪浅。

1.   对于symlink()函数有了更深的理解,它的作用是创建一个软链接,如果提前open一个文件,再对一个已存在的文件用open的文件创建软链接,就会创建成功,如果用open创建的文件对一个不存在的文件创建软链接,就会失败。(我正是利用这一点来判断是否真正需要上传文件)但是,如果没有open一个文件,直接用一个字符串对已存在或未存在的文件创建软链接,都会成功。

2.   对于strtok和strtok_r函数有了更深的理解。strtok函数,比如以空格为分隔符分割,它只是在原字符串上将空格改为\0,因此,使用strtok时一定要小心,以防止源字符串被修改。那么,它的返回值只是源字符串的一个子串,返回值依然指向源字符串。

strtok_r是linux下的strtok的线程安全版,即可重入版本,strtok在提取字符串时使用了静态缓冲区,因此,它是线程不安全的。如果要顾及到线程的安全性,应该使用strtok_r。

strtok_r多了一个char **saveptr的参数,strtok_r有一个指针token,用来保存当前待分解的字符串,如果找不到分隔符,saveptr指向token的\0所在的位置,否则将分隔符所在位置赋值为\0,saveptr继续走。   strtok可以理解为用一个内部的静态变量将strtok_r中的saveptr给保存起来,对调用者不可见。(例子;双重循环分割字符串)

3.   首先,思路要清晰,要知道自己干什么,需要什么,目标是什么,不能盲目的瞎忙活。

4.   找到自己真正的需求后,着手一个一个去完成,不能遇到困难就退缩,不能嫌麻烦,遇事要冷静,仔细分析问题,要有耐心。

5.   要真正地沉下心来仔细深入地思考一个问题,要看到一个问题背后的原理,学会触类旁通。

6.   不能骄傲,不能自大,不要觉着自己有一点点成就感就感觉自己很伟大了,就去做别的事情了,这样不行,这时需要的是冷静,冷静,再冷静,然后沉下心来认真的思考下一步怎么做会更好,注意是更好,要重视效率。

7.   在敲代码时一定一定得一心一意,专心致志的思考,这个动作是连贯的,一旦被打断,就得重新再来,很浪费时间。

8.   做完项目,码字速度更快了啊。然而,我做的太慢,考虑问题不是很全面,总之,项目需要改进和增加的功能还很多,有待补充此项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@所谓伊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值