项目正式——基于tcp协议的文件传输系统
基于tcp协议的文件传输系统-业务需求

类似校园网

模拟网上银行APP服务端
略 抱歉
tcp短连接和长连接
上传文件(一)

和FTP文件传输系统功能类似


一个上传服务端和客户端模块
客户端子函数实现心跳的功能,在循环睡十秒然后发送报文,报文过期六十秒,所以一般不会出现超时避免长连接,只要发送和接受回到的报文和要求的一样就行
服务端通用的函数,fork子进程一个接受一个处理上传,接受报文然后判断是否心跳报文处理,其他的报文暂不处理
测试连接查看日志就行 备份在bak中
上传文件(二)
参数:
类似ftp,ftp上传一次会退出,tcp会长连接,接着上传
服务端对于客户端可能会有存放目录等其他需求,需要使用报文接受客户端的参数
服务端在子进程函数中处理该报文,解析然后存放结构体然后返回信息,通过客户端传递过来的类型来决定上传下载退出
补充:tcpclient处理了粘包的问题
gdb多进程调试很麻烦,去掉子进程的代码
上传文件(三)

具体细节看代码
服务端模式选择解析上传文件 解析请求报文的内容,成功接收然后拼接+确认
补充:请求用来被解析,确认报文用来确认是否收到,否则重传
上传文件(四)
上传文件的第一个内容信息,收到确认报文开始陆续上传全部内容
特别编写发送文件和接受的代码,这一块略过,业务繁杂
同步和异步通讯





dmo07 - dmo9 不同版本的通信程序
性能高很多,不需要浪费时间等待报文
上传文件(五)
使用io复用改进客户端代码改善传输效率
用一个变量来维护发送和回复的报文++ --

注意io复用这里面已经被tcpclient封装了
下载文件


所以业务报文代码逻辑可以反过来的

本质也是互相反过来就可以了
把标志位给为下载位就可以了

参数名字添加修改,注释掉上传不需要的功能
添加在sh和stop加入实例程序即可 记得目录地址以及ip地址,每次添加此类添加文件的程序都需要记得定时清理压缩
查看日志 自己测试 观看代码主要逻辑 项目总体布局 项目售卖介绍界面编写 最后老师讲解

浙公网安备 33010602011771号