项目正式——基于tcp协议的文件传输系统

基于tcp协议的文件传输系统-业务需求image
image
类似校园网

image

模拟网上银行APP服务端

略 抱歉

tcp短连接和长连接

上传文件(一)

image

和FTP文件传输系统功能类似
image
image
一个上传服务端和客户端模块

客户端子函数实现心跳的功能,在循环睡十秒然后发送报文,报文过期六十秒,所以一般不会出现超时避免长连接,只要发送和接受回到的报文和要求的一样就行

服务端通用的函数,fork子进程一个接受一个处理上传,接受报文然后判断是否心跳报文处理,其他的报文暂不处理

测试连接查看日志就行 备份在bak中

上传文件(二)

参数:image
类似ftp,ftp上传一次会退出,tcp会长连接,接着上传

服务端对于客户端可能会有存放目录等其他需求,需要使用报文接受客户端的参数image
服务端在子进程函数中处理该报文,解析然后存放结构体然后返回信息,通过客户端传递过来的类型来决定上传下载退出

补充:tcpclient处理了粘包的问题
gdb多进程调试很麻烦,去掉子进程的代码

上传文件(三)

image
具体细节看代码

服务端模式选择解析上传文件 解析请求报文的内容,成功接收然后拼接+确认

补充:请求用来被解析,确认报文用来确认是否收到,否则重传

上传文件(四)

上传文件的第一个内容信息,收到确认报文开始陆续上传全部内容

特别编写发送文件和接受的代码,这一块略过,业务繁杂

同步和异步通讯

image
image
image
image
image
dmo07 - dmo9 不同版本的通信程序
性能高很多,不需要浪费时间等待报文

上传文件(五)

使用io复用改进客户端代码改善传输效率
用一个变量来维护发送和回复的报文++ --
image
注意io复用这里面已经被tcpclient封装了

下载文件

image
image
所以业务报文代码逻辑可以反过来的
image
本质也是互相反过来就可以了
把标志位给为下载位就可以了
image
参数名字添加修改,注释掉上传不需要的功能

添加在sh和stop加入实例程序即可 记得目录地址以及ip地址,每次添加此类添加文件的程序都需要记得定时清理压缩

查看日志 自己测试 观看代码主要逻辑 项目总体布局 项目售卖介绍界面编写 最后老师讲解

posted @ 2023-11-06 10:17  游客0721  阅读(143)  评论(0)    收藏  举报