项目正式——基于tcp协议的文件传输系统
基于tcp协议的文件传输系统-业务需求
类似校园网
模拟网上银行APP服务端
略 抱歉
tcp短连接和长连接
上传文件(一)
和FTP文件传输系统功能类似
一个上传服务端和客户端模块
客户端子函数实现心跳的功能,在循环睡十秒然后发送报文,报文过期六十秒,所以一般不会出现超时避免长连接,只要发送和接受回到的报文和要求的一样就行
服务端通用的函数,fork子进程一个接受一个处理上传,接受报文然后判断是否心跳报文处理,其他的报文暂不处理
测试连接查看日志就行 备份在bak中
上传文件(二)
参数:
类似ftp,ftp上传一次会退出,tcp会长连接,接着上传
服务端对于客户端可能会有存放目录等其他需求,需要使用报文接受客户端的参数
服务端在子进程函数中处理该报文,解析然后存放结构体然后返回信息,通过客户端传递过来的类型来决定上传下载退出
补充:tcpclient处理了粘包的问题
gdb多进程调试很麻烦,去掉子进程的代码
上传文件(三)
具体细节看代码
服务端模式选择解析上传文件 解析请求报文的内容,成功接收然后拼接+确认
补充:请求用来被解析,确认报文用来确认是否收到,否则重传
上传文件(四)
上传文件的第一个内容信息,收到确认报文开始陆续上传全部内容
特别编写发送文件和接受的代码,这一块略过,业务繁杂
同步和异步通讯
dmo07 - dmo9 不同版本的通信程序
性能高很多,不需要浪费时间等待报文
上传文件(五)
使用io复用改进客户端代码改善传输效率
用一个变量来维护发送和回复的报文++ --
注意io复用这里面已经被tcpclient封装了
下载文件
所以业务报文代码逻辑可以反过来的
本质也是互相反过来就可以了
把标志位给为下载位就可以了
参数名字添加修改,注释掉上传不需要的功能
添加在sh和stop加入实例程序即可 记得目录地址以及ip地址,每次添加此类添加文件的程序都需要记得定时清理压缩
查看日志 自己测试 观看代码主要逻辑 项目总体布局 项目售卖介绍界面编写 最后老师讲解
本文作者:游客0721
本文链接:https://www.cnblogs.com/Gal0721/p/17807893.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库