关于毕业设计的一些问题
这些时间,一直在想自己的毕业设计的实现。本来做了一个简单的。但是和自己的计划的内容相差太远了。结合网络的知识,加上编程。我想做的毕业设计有以下内容
1:自定义协议传输文件
2:高效率传输
3:用户体验良好
4:扩展性能良好
5:层次结构明显
计划使用的编程语言:Linux下使用C++和Java,Windows下使用C++和C#。
C++主要做传输层业务和文件的合并业务。而在Linux下,其实可以全用C++,因为本来用C#和Java的目的其实就是写界面。但是我想弄一个有点技术含量的,所以并没有想要在Linux下要界面,给他一个配置文件。但是这样对我的Linux下编程能力是个很大的考验。
但是这次的毕业设计主要还是在Windows 下,演示,答辩。所以还是先处理Windows下的问题。
技术解决方案:
1.文件监控
2.协议定义
3.数据传输,使用UDP,目的是
1)高效
2)方便UDP打洞
3) 减少服务器的负荷
4)使网络资源节约
但是使用UDP就会遇到问题,
1)确认用户在线
2)数据包无序,无确认
解决方案:
1)在定义时间内,每单位时间,向服务器发一次“Hello”包,表示自己的存在
2)UDP是无序的,但是可以将收到的包,首先缓存在一个存储空间,在文件包完整后,由一个业务,将其组织成一个完整的文件
3)UDP无确认,可以在自定义的协议内加确认和校验。比如现在发到底130个包,但是第69个包一直没有收到,如果当68号包收到10s后,将从新 请求这一个数据包,客户端将重新发送。在之后的数据如果还收到这个包,则直接在过滤层将其抛掉。
4.提高效率:
1)客户端开放三个连续的端口,第一个端口是用于接受和发送一些基本的信息,比如登录,文件的前探包(自定的,就是在每一次发送或者请求文件时,将发送一个 包,用于建立一条通道。)第二个端口是发送文件,第三个端口是接受文件。这样可以使客户端的接受和发送两不误。直接的影响是网络的带宽等的限制,软件 的影响不大。
2)分布应用端也是一个端口是固定的监听基本信息。一旦有具体的文件请求,建立一个通道,直接在这个通道内发送数据,不再经过总的那个端口。这样可以提高 效率。一旦使用完毕,系统将收回通道,等到下一次分配。
但是现在遇到一个问题是关于UDP的内网打洞。因为这个打洞要的是对等的NAT,而且现在有一个问题是讲过NAT之后,传出去的数据包还能获得客户端的监听端口吗?因为这些端口是随机分配的。如果可以,那样就可以解决。如果不能就需要在登录的时候就处理,在协议中直接携带端口到服务器。可以在客户端封装协议的时候,直接将端口封装进协议。这样就可以解决通过NAT传输后变化端口。但是这样有一个问题,通过NAT之后,比如我第一个端口是3330,但是第二个端口是33301,第三个是33302,首先发了一个请求包是通过3330端口发送的,这样NAT是分配的是3330的对应的端口,而建立33301的通道就不知道到底NAT会如何分配通道。
解决方案,可以在协议中携带第一个端口,但是当通道建立好还是直接想第一个端口发送,发送的内容是过滤层的通道建立地址,这样当客户端第一个端口接收到数据,就可以按照请求的需求,通过第二或者第三个端口,想过滤服务器发送一个通道确认包,过滤端就可以获得NAT后的地址。这样就可以把通道建立起来。就可以不使用UDP打洞。用UDP通道还有一个好处好像是可以绕过防火墙之类的。
转载于:https://www.cnblogs.com/Pily_K/archive/2011/09/25/2189841.html
关于毕业设计的一些问题相关推荐
- 基于颜色特征,形状特征和纹理特征的数字图像的检索(Digital Image Retrieval)MATLAB GUI实现(本科毕业设计)
该程序实现的功能为:检索出指定的图像文件,并从检索出的图像中检索出指定的物体 . 1,主程序为Recognition和Recognition. 2.颜色特征,形状特征,纹理特征为对应的各子程序. 3. ...
- 24/4毕业设计小记
折腾了很久了,关于我的毕业设计,一直就没有时间来写博客,今天感冒了,趁着思路不太好的时候就写一篇博客吧!写什么好呢,就写基于vlc sdk的播放器开发吧! 我的项目是关于windows和linux两个 ...
- 基于jsp的图书管理系统_计算机毕业设计基于JSP书籍租阅管理系统的设计与实现...
系统总业务流程图: 普通用户业务流程图: 管理员业务流程图: 系统功能需求设计: 1.系统用户管理:超级管理员和普通管理员都需要对系统用户进行管理,包括添加.删除.修改和查询普通管理员,修改管理员密码 ...
- qpsk调制解调matlab_本科毕业设计课题—QPSK相干解调的MATLAB仿真(3)
继续讲解! 给出参考文章! <全数字BPSKQPSK接收机同步技术研究> 模拟中频信号经过模数转换后形成数字中频信号,解调时首先经数字下变频器DDC(digita down-convert ...
- 计算机论文工作进程记录,毕业设计进程记录
本频道涵盖与毕业设计和进程和记录有关的论文范例,免费给你学习毕业设计进程记录怎么写提供相关文献资料. [摘要]结合中国矿业大学工程技术学院应用型人才的培养目标,针对安全专业的特点,通过分析近年毕业设计 ...
- qudpsocket 丢包 线程解决_服装毕业设计一站式解决方案——线下amp;线上辅导课程...
毕业季来了!真的来了! 服装人准备好了嘛? 勤勤恳恳努努力力做着毕业设计的你是否会遇到以下问题: 1.有设计想法,可是不知道该怎么实现? 2.有效果图,但不知道怎么与自己的设计灵感扯上关系? 3.想法 ...
- python爬虫怎么做毕业设计_python语言爬虫做成毕业设计的话,怎样答辩演示,或者怎样把爬虫复杂化?...
作为一名IT行业的从业者,同时也是一名计算机专业的教育工作者,我来回答一下这个问题. 对于计算机专业的学生来说,如果想把毕业设计定位在爬虫上,虽然从技术选型上是完全可以的,但是通过爬虫来获取数据本身还 ...
- linux界面设计论文,毕业设计(论文)-基于linux的云校园桌面虚拟化系统的设计与实现.doc...
毕业设计(论文)-基于linux的云校园桌面虚拟化系统的设计与实现.doc 还剩 67页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧, ...
- 毕业设计:基于Springboot实现求职招聘,校园招聘系统
作者主页:编程指南针 简介:Java领域优质创作者.CSDN博客专家 Java项目.简历模板.学习资料.面试题库.技术互助 文末获取源码 目录 一.项目概述..................... ...
- 毕业设计:基于Web实现多用户宿舍管理系统
项目编号:BS-GX-033 开发技术: 后台:jsp+servlet+jdbc 前台:jsp+bootstrap 运行环境: 数据库:mysql5.7 JDK: 1.8 Maven: 3.9 开发工 ...
最新文章
- HBM2E Flashbolt--提升人工智能的算力
- css中单位px和em,rem的区别
- 3.3.2 Rhino与env.js
- Weblogic二种修改端口的方法(转)
- Python编写自动化脚本(无验证码)
- Android Jetpack组件之数据库Room详解(二)
- 使用IP-guard补丁分发批处理脚本实现分发补丁
- 1.100个房产测量常见问题 2. 现有的商用房产测绘软件 3.问题_拔剑-浆糊的传说_新浪博客...
- Table表格边框线、样式
- oppo服务器在哪个文件夹,OPPO手机云服务备份的东西在哪里能找到
- the little schemer 学习
- 各种编码中使用到的工具类
- LoadrRunner报错-Error: The table 'F:\测试脚本\loadrunner\toutTest3\NewParam.dat' does not exist.
- 我可以借助计算机在家里工作翻译,请帮我翻译下面句子
- (十六)Hibernate中的延迟加载
- person reid demo郑哲东 Deep ReID
- 科技文献检索(十一)——常用文摘型数据库
- Nature子刊:中大骆观正组在RNA修饰方法学领域取得重要进展
- 普通中继模型-吞吐量
- ValueError: It seems that you are using the Keras 2 and you are passing both `kernel_size` and `stri