基于UDP协议的并行多线程可靠通讯研究

来源 :城市建设理论研究 | 被引量 : 0次 | 上传用户:jingkaiqq
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息傳送服务。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。本文将讲述基于UDP协议使用C#编程结合心跳包验证技术实现并行多线程可靠通讯。
  关键词:UDP C# 并行 多线程 可靠通讯
  中图分类号:I253 文献标识码:A 文章编号:
  一、相关技术简介
  UDP协议的全称是用户数据包协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。由于UDP的特性,具备资源消耗小、处理速度快的优点;缺点是不提供数据包分组、组装和不能对数据包进行排序,也就是说,当报文发送之后,是无法得知其是否安全完整到达目的地。
  C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言。C#程序被运行于.NET平台上。
  目前.NET Framework已经随着Windows 8的发布发展到了4.5版本,本文将基于.NET Framework 4.0环境详述使用C#实现并行多线程可靠通讯的方法。
  二、并行多线程可靠通讯的实现
  1、线程安全集合类
  在实际通讯应用中,通常要求通讯服务器端具备多线程并行处理能力。在多线程模式下,如何维护诸如客户端列表、通讯数据缓存等数据的同步和一致成为每一个开发者应该首先解决的问题。
  在.NET 4.0之前,通常使用同步对象和(或)互斥对象实现多线程的同步控制,如C#的lock关键字,实际就是获取对象的互斥锁、执行代码、释放互斥锁的过程。
  在.NET 4.0中,Concurrent命名空间为开发者提供了多个线程安全集合类,这些集合类将自动维护多线程并发访问时对数据的同步控制,可以从多个线程同时使用,无需开发者使用如同步或互斥的技术对数据同步进行干预。
  本文将以BlockingCollection线程安全集合对象实现多线程下对客户端列表和通讯数据缓存的同时访问,数据定义如下:
  private BlockingCollection _SedCache = new BlockingCollection();
  private BlockingCollection _RecCache = new BlockingCollection();
  private BlockingCollection _SedQue = new BlockingCollection();
  private BlockingCollection _Clients = new BlockingCollection();
  2、并行多线程UDP通讯
  在通讯的处理上,我们将同时使用线程池对象ThreadPool和并行处理对象Parallel进行并行多线程的处理。
  ThreadPool可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。无需开发者手动创建多线程,降低代码量,提高稳定性,且提供多个方法用于手动控制和维护线程池工作状态。
  Parallel提供对并行循环和区域的支持,其所有公共且受保护的成员都是线程安全的,可从多个线程同时使用,符合多线程通讯时对数据同步和一致性的需求。
  以发送数据为例,首先实现如下处理函数:
  (1)心跳包处理函数:CheckHeartPackage
  (2)发送队列处理函数:CheckSendQue
  (2)发送数据函数:SendData
  并行处理的调用:
  Parallel.Invoke( new Action[] { CheckHeartPackage, CheckSendQue });
  通过线程池发送数据:
  private void CheckSendQue(){
  SendQuesq;
  SendQue[] sqs = _SedQue.ToArray();
  for (int i = 0; i < sqs.Length; i++){
  sq = sqs[i];
  bool bAdd = ThreadPool.QueueUserWorkItem(SendData, sq);
  if (bAdd)
  _SedQue.TryTake(out sq);
  }
  }
  3、可靠通讯的实现——心跳包
  由于UDP协议提供不可靠信息传送服务特性,在通讯中,无法保证数据准确无误的送达对方,本文将讲述通过心跳包验证实现可靠通讯的方法。
  心跳包包含接收缓存中的数据校验信息,包括数据发送者的IP地址、端口号、发送索引。心跳包生成后,进入发送队列供线程调度,并发送到对方。
  因心跳包需要提取发送者的发送索引,故发送端在生成发送数据缓存的同时应生成一个无重复的索引(SendIndex)。
  当接收到对方的心跳包后,从心跳包中可提取出对方接收缓存的校验信息,通过校验信息与本机发送缓存的对比,可检测出本机曾今发送过的数据是否全部到达对方。已经到达对方的数据应做一个标记(IsArrived = true),如果对方缺少本机的发送数据,则可再次发送。
  心跳包的发送频率可根据使用环境而定,通常设置成3秒即可。
  4、生命周期与异常处理
  在实际通讯应用中,应为通讯增加详尽的异常处理机制,在重要的通讯场合,还应该记录发生过的所有异常,如记录通讯错误、发送失败等信息。
  为避免收发缓存无限增长导致大量资源被占用从而影响主机性能,应为收发缓存增加生命周期机制,同时记录创建缓存对象的时间。在创建心跳包的时候,应首先检测收发缓存中数据的生命周期是否到期,如果到期,则从缓存中删除数据;如果是发送缓存,则还应检查该数据是否到达对方,如果未到达对方,应做异常记录。
  关于生命周期的设置,接收缓存的生命周期应大于发送缓存的生命周期,确保接收缓存的数据晚于对方发送缓存删除,同时还应考虑心跳包的发送频率。如心跳包发送频率为3秒,发送缓存生命周期为10秒,接收缓存生命周期15秒。
  三、面向对象可靠通讯的改进
  通过以上的讨论,已经实现了基于UDP协议的并行多线程可靠通讯。
  在此基础上,可在传输前增加对象序列化操作,接收到数据后执行反序列化操作,以实现面向对象的通讯。
  在传输数据时,可通过使用DeflateStream类对数据流进行压缩与解压缩,以降低网络上的数据量。
  参考文献:
  [1].C#高级编程 清华大学出版社
  [2].Microsoft Visual Studio 2010 文档
  [2].百度百科
其他文献
摘要:智能变电站是智能电网的重要组成部分,智能变电站与数字化变电站及传统变电站在一次设备上的主要区别是一次设备智能化。本文简略介绍智能变电站的定义、结构及特征,探讨智能变电站中一次设备智能化应用的有关问题,总结智能变电站与数字化变电站及传统变电站在一次设备上的主要区别。  关键字:智能变电站;一次设备;智能化  中图分类号: TM411 文献标识码: A 文章编号:  智能變电站的定义  保证电网
摘要:电厂锅炉主要以煤为燃料,其燃烧产物中含有大量的灰粒、硫和氮的氧化物等物质,这些物质在锅炉运行过程中,有时会以各种形式沉积在受热面的表面,造成受热面的结焦。本文探讨了电厂锅炉结焦原因及防治措施。  关键词:电厂;锅炉结焦;原因;措施  中图分类号:TM6文献标识码: A 文章编号:  我国电厂燃煤锅炉存在不同程度的结焦现象,部分电厂因结焦严重而迫使锅炉出力降低10% ~20% ,热效率降低1%
【摘要】:改革开放以来,随着社会主义市场经济的高速发展,我国居民的人均生活水平不断提高,伴随着的是房地产的迅速崛起。人们满足温饱问题后,开始有更高的追求,对住房的要求也不仅仅满足简单的遮风挡雨,而是把其当做“家”,对质量、艺术追求也逐渐变多。出现这种需求,就需要建筑施工企业积极做好相应的准备,尤其在工程施工现场中做好总体设计、控制、监督等,提高施工现场管理的水平,着对房屋整体建设起到关键作用。该文
摘要:近年来,随着我国高速公路陆续建成通车,高速公路客运应运而生,它以其快速、安全、经济、舒适的优势在综合运输体系中的地位日趋重要。本文在分析高速公路提出了组建大型客运集团的必要性和紧迫性。  关键词高速公路客运企业集团组建   中图分类号:U412.36+6 文献标识码:A 文章编号:   随着改革开放的深入以及经济發展对公路运输的需求,促使我国公路快速地向高等级化发展。根据我国高速公路客运的特
摘要:本文根据“绿色照明”的理念,分析各种光源的特性、适用范围,结合某工厂各个主要场所的环境特点,选择最节能、最合理的照明设备。  关键词:绿色照明 节能   中图分类号:TE08文献标识码: A 文章编号:  1 概述  绿色照明是保护环境、节约能源、有益于提高人们工作和生活质量、保障身心健康的照明。也就是指通过科学的照明设计,采用效率高、寿命长、安全和性能稳定的照明电器产品(包括光源,电器附件
[内容提要]泡沫轻质土是通过发泡机的发泡系统将发泡剂用机械方式充分发泡,并将泡沫与水泥浆均匀混合,然后经过发泡机的泵送系统进行现场浇注施工或模具成型,经自然养护形成的一种含有大量封闭气孔的新型轻质保温材料。泡沫轻质土结合国情而研制的新型节能绿色环保建材,集高性能、多功能、实用性为一体,综合对比优于传统的轻骨料混凝土、加气混凝土和泡沫混凝土。  [关键词]泡沫轻质土多功能环保质轻高强  中图分类号:
【摘要】园林施工新工艺代表着城市园林工程施工的发展趋势,直接影响着植物的生长和景观的效果。但是,在园林施工新工艺的运用和园林景观的管理过程中,还存在一定的管理和技术难点,需要园林工程施工技术人员和施工人员以及园林景观管理人员加以认真解决。  【关键词】园林施工新工艺管理技术难点  中图分类号: K928 文献标识码: A 文章编号:  引言  园林施工新工艺一直是城市园林发展的一条主线,可以毫不夸
【摘要】建筑行业是一种分工细致的行业,建筑工程的管理是建筑企业发展的重要基础,对于建筑企业的发展具有重要的意义。本文结合工作实际,谈讨建筑工程项目管理的创新方法。  【关键词】工程项目;管理方法;创新  中图分类号:TU198文献标识码: A 文章编号:  引言 工业与民用建筑工程的管理是一项较为复杂的工作,管理过程中遇到的一些问题:  1.工程质量问题。导致工程质量出现问题的原因主要包括以下方面
摘要:随着科技的发展和生活水平的提高,人们越来越重视自身环境的需求,而许多用于室内装修的建筑材料,不同程度的含有对人体健康有害的气体,使用不当,便会对身体健康造成危害。本文介绍了住宅新型新风系统的应用,并指出提高室内空气质量最有效的办法是将室外的新鲜空气引入室内,同时排出室内污浊空气。  关键词:住宅;新风系统;通风  中图分类号:[F287.8] 文献标识码:A 文章编号:   通常在室外,空气
摘要:本文阐述了城市园林绿化设计的含义,分析了城市园林绿化设计存在的问题,探讨了城市园林绿化设计的对策。  关键词:城市;园林绿化;设计;问题;对策  中图分类号:K928.73 文献标识码:A 文章编号:   园林是我们生活的自然界的浓缩, 在这个快节奏的高速发展的社会里,人们普遍生活压力大,这时候我们需要给自己一个安静的舒适的空间,让人们放松脚步来享受自然、缓解压力,而园林恰好是这样一个舒服的