这些时间,一直在想自己的毕业设计的实现。本来做了一个简单的。但是和自己的计划的内容相差太远了。结合网络的知识,加上编程。我想做的毕业设计有以下内容

  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

关于毕业设计的一些问题相关推荐

  1. 基于颜色特征,形状特征和纹理特征的数字图像的检索(Digital Image Retrieval)MATLAB GUI实现(本科毕业设计)

    该程序实现的功能为:检索出指定的图像文件,并从检索出的图像中检索出指定的物体 . 1,主程序为Recognition和Recognition. 2.颜色特征,形状特征,纹理特征为对应的各子程序. 3. ...

  2. 24/4毕业设计小记

    折腾了很久了,关于我的毕业设计,一直就没有时间来写博客,今天感冒了,趁着思路不太好的时候就写一篇博客吧!写什么好呢,就写基于vlc sdk的播放器开发吧! 我的项目是关于windows和linux两个 ...

  3. 基于jsp的图书管理系统_计算机毕业设计基于JSP书籍租阅管理系统的设计与实现...

    系统总业务流程图: 普通用户业务流程图: 管理员业务流程图: 系统功能需求设计: 1.系统用户管理:超级管理员和普通管理员都需要对系统用户进行管理,包括添加.删除.修改和查询普通管理员,修改管理员密码 ...

  4. qpsk调制解调matlab_本科毕业设计课题—QPSK相干解调的MATLAB仿真(3)

    继续讲解! 给出参考文章! <全数字BPSKQPSK接收机同步技术研究> 模拟中频信号经过模数转换后形成数字中频信号,解调时首先经数字下变频器DDC(digita down-convert ...

  5. 计算机论文工作进程记录,毕业设计进程记录

    本频道涵盖与毕业设计和进程和记录有关的论文范例,免费给你学习毕业设计进程记录怎么写提供相关文献资料. [摘要]结合中国矿业大学工程技术学院应用型人才的培养目标,针对安全专业的特点,通过分析近年毕业设计 ...

  6. qudpsocket 丢包 线程解决_服装毕业设计一站式解决方案——线下amp;线上辅导课程...

    毕业季来了!真的来了! 服装人准备好了嘛? 勤勤恳恳努努力力做着毕业设计的你是否会遇到以下问题: 1.有设计想法,可是不知道该怎么实现? 2.有效果图,但不知道怎么与自己的设计灵感扯上关系? 3.想法 ...

  7. python爬虫怎么做毕业设计_python语言爬虫做成毕业设计的话,怎样答辩演示,或者怎样把爬虫复杂化?...

    作为一名IT行业的从业者,同时也是一名计算机专业的教育工作者,我来回答一下这个问题. 对于计算机专业的学生来说,如果想把毕业设计定位在爬虫上,虽然从技术选型上是完全可以的,但是通过爬虫来获取数据本身还 ...

  8. linux界面设计论文,毕业设计(论文)-基于linux的云校园桌面虚拟化系统的设计与实现.doc...

    毕业设计(论文)-基于linux的云校园桌面虚拟化系统的设计与实现.doc 还剩 67页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧, ...

  9. 毕业设计:基于Springboot实现求职招聘,校园招聘系统

    作者主页:编程指南针 简介:Java领域优质创作者.CSDN博客专家  Java项目.简历模板.学习资料.面试题库.技术互助 文末获取源码 目录 一.项目概述..................... ...

  10. 毕业设计:基于Web实现多用户宿舍管理系统

    项目编号:BS-GX-033 开发技术: 后台:jsp+servlet+jdbc 前台:jsp+bootstrap 运行环境: 数据库:mysql5.7 JDK: 1.8 Maven: 3.9 开发工 ...

最新文章

  1. HBM2E Flashbolt--提升人工智能的算力
  2. css中单位px和em,rem的区别
  3. 3.3.2 Rhino与env.js
  4. Weblogic二种修改端口的方法(转)
  5. Python编写自动化脚本(无验证码)
  6. Android Jetpack组件之数据库Room详解(二)
  7. 使用IP-guard补丁分发批处理脚本实现分发补丁
  8. 1.100个房产测量常见问题  2. 现有的商用房产测绘软件 3.问题_拔剑-浆糊的传说_新浪博客...
  9. Table表格边框线、样式
  10. oppo服务器在哪个文件夹,OPPO手机云服务备份的东西在哪里能找到
  11. the little schemer 学习
  12. 各种编码中使用到的工具类
  13. LoadrRunner报错-Error: The table 'F:\测试脚本\loadrunner\toutTest3\NewParam.dat' does not exist.
  14. 我可以借助计算机在家里工作翻译,请帮我翻译下面句子
  15. (十六)Hibernate中的延迟加载
  16. person reid demo郑哲东 Deep ReID
  17. 科技文献检索(十一)——常用文摘型数据库
  18. Nature子刊:中大骆观正组在RNA修饰方法学领域取得重要进展
  19. 普通中继模型-吞吐量
  20. ValueError: It seems that you are using the Keras 2 and you are passing both `kernel_size` and `stri

热门文章

  1. 如何利用ERP系统实现全面计划管理?
  2. Vim 简明攻略 --学海无涯苦作舟
  3. 小型图书借阅管理系统
  4. 维智科技荣获2021 AIWIN(秋季)应用创新赛十二强
  5. springboot项目中添加定时任务
  6. tensorlfow学习之四训练集样本不平衡问题
  7. banner设计讲解
  8. php将数组的下标从新定义自增 array_values
  9. 小智新报丨勇士与普尔续约1.4亿高薪合同,新合同被限定多个限制条款
  10. 浙江理工大学 数论基础 考试 笔记