网络编程实现简易网盘

网络编程实现简易磁盘

设计功能如下

1.有一个客户端和发送端
2.客户端能连接服务器
3.客户端输入上传指令,将文件上传到服务器
4.服务器接收到文件,将文件大小名字上传到sq数据库
5.客户端发送下载请求,将服务器的文件下载下来
6.客户端发送查看请求,服务器查看sq库内容,并发送给客户端。
功能实现思路如下
创建服务器程序,创建客户端程序,利用套接字实现网络连接,服务器通过创建子线程的方式满足持续工作,客户可以通过比较输入指令的方式完成相应的操作,服务器还要打印出连接目标的信息

put
先创建相应的数组及指针,将要发送文件的全部信息导入到数组中,包括名字大小等等,将这些信息send给服务器,然后用标准io打开文件,在循环中读取发送,当read返回值为0,结束发送关闭文件指针,服务器recv到客户端发的信息,创建相应的数组接收文件信息,以可执行方式创建打开同名文件夹,接收服务器发送来的信息,write进文件中,最后关闭文件指针,文件信息在循环外发送和接收一次,因为recv会阻塞所以同步完成后,才进入循环的读写,不会让文件丢包乱序
Get
原理与get基本相同,但是要注意两者函数有不同之处,套接字在各函数的形式也不同,在send与recv的时候,注意套接字参格式。
List
构建库函数,需要用到创建插入查找三个功能,单个表信息包括内容包含文件名字大小,在客户端put时,recv到文件的信息后,调用库函数的插入,将信息同步插入到表中,同时使用构建的查找函数先验证是否上传成功,文件有无丢包。客户端输入list命令,进入list命令分支,同时将命令发送给服务器,服务器接到命令后将库中的文件信息send出来,客户端写一个recv接收后打印,需要注意文件的大小名字在写函数参数时都定义为char*类型,传参时需要将int型的大小写进数组,防止格式错误

客户机部分代码
服务器代码,这里是将线程封装成函数调用了

在这里插入图片描述
客户机代码。

在这里插入图片描述
对用到的函数进行封装,包括子线程函数
在这里插入图片描述
对函数声名以及定义结构体,以便我们进行分装
在这里插入图片描述
sqlite3库函数,
sqlite3库函数,写库函数的时候记得也要写一个.h文件,自己写,不过多讲了,sqlite3.c 和sqlite.h在网上找资源,不懂自己去搜,工程构建思路我也会放下来,写完后对工程进行封装。把开辟插入查看函数塞进上传下载中,自己执行的时候记得键入网络ip
请添加图片描述
sqlite3调用,以及哪里不明白的欢迎问

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇阳86

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

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

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

打赏作者

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

抵扣说明:

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

余额充值