物是人非事事休,欲语泪先流|

游客0721

园龄:2年粉丝:4关注:2

项目正式——基于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地址,每次添加此类添加文件的程序都需要记得定时清理压缩

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

本文作者:游客0721

本文链接:https://www.cnblogs.com/Gal0721/p/17807893.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   游客0721  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 優しい光 水谷広実
  2. 2 ひだまりの中で SONO MAKERS,鈴丸
  3. 3 白い吐息 MANYO
  4. 4 夏の子守歌 折戸伸治
ひだまりの中で - SONO MAKERS,鈴丸
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.