c# 实现的多线程异步socket数据包接收器框架

c# 实现的多线程异步socket数据包接收器框架

ID:16984218

大小:39.07 KB

页数:30页

时间:2018-08-26

c# 实现的多线程异步socket数据包接收器框架_第1页
c# 实现的多线程异步socket数据包接收器框架_第2页
c# 实现的多线程异步socket数据包接收器框架_第3页
c# 实现的多线程异步socket数据包接收器框架_第4页
c# 实现的多线程异步socket数据包接收器框架_第5页
资源描述:

《c# 实现的多线程异步socket数据包接收器框架》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C#实现的多线程异步Socket数据包接收器框架分类: C#2009-03-1918:44 3608人阅读 评论(2) 收藏 举报socket多线程c#sessionnull服务器几天前在博问中看到一个C#Socket问题,就想到笔者2004年做的一个省级交通流量接收服务器项目,当时的基本求如下:·接收自动观测设备通过无线网卡、Internet和Socket上报的交通量数据包·全年365*24运行的自动观测设备5分钟上报一次观测数据,每笔记录约2K大小·规划全省将有100个左右的自动观测设备(截止2008年10月还只有30个)     当时,VS2003才发布年多,笔者也是接触C#

2、不久。于是Google了国内国外网,希望找点应用C#解决Socket通信问题的思路和代码。最后,找到了两篇帮助最大的文章:一篇是国人写的Socket接收器框架,应用了独立的客户端Socket会话(Session)概念,给笔者提供了一个接收服务器的总体框架思路;另一篇是美国人写的,提出了多线程、分段接收数据包的技术方案,描述了多线程、异步Socket的许多实现细节,该文坚定了笔者采用多线程和异步方式处理Socket接收器的技术路线。    具体实现和测试时笔者还发现,在Internet环境下的Socket应用中,需要系统有极强的容错能力:没有办法控制异常,就必须允许它们存在(附加源代

3、码中可以看到,try{}catch{}语句较多)。对此,笔者设计了一个专门的检查和清理线程,完成无效或超时会话的清除和资源释放工作。    依稀记得,国内框架作者的名称空间有ibm,认为是IBM公司职员,通过邮件后才知道其人在深圳。笔者向他请教了几个问题,相互探讨了几个技术关键点。可otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedas

4、recorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand惜,现在

5、再去找,已经查不到原文和邮件了。只好借此机会,将本文献给这两个素未谋面的技术高人和同行,也盼望拙文或源码能给读者一点有用的启发和帮助。1、主要技术思路    整个系统由三个核心线程组成,并由.NET线程池统一管理:·侦听客户端连接请求线程:ListenClientRequest(),循环侦听客户端连接请求。如果有,检测该客户端IP,看是否是同一观测设备,然后建立一个客户端TSession对象,并通过Socket异步调用方法BeginReceive()接收数据包、EndReceive()处理数据包·数据包处理线程:HandleDatagrams(),循环检测数据包队列_datagra

6、mQueue,完成数据包解析、判断类型、存储等工作·客户端状态检测线程:CheckClientState(),循环检查客户端会话表_sessionTable,判断会话对象是否有效,设置超时会话关闭标志,清楚无效会话对象及释放其资源2、主要类简介    系统主要由3个类组成:·TDatagramReceiver(数据包接收服务器):系统的核心进程类,建立Socket连接、处理与存储数据包、清理系统资源,该类提供全部的public属性和方法·TSession(客户端会话):由每个客户端的Socket对象组成,有自己的数据缓冲区,清理线程根据该对象的最近会话时间判断是否超时·TDatag

7、ram(数据包类):判断数据包类别、解析数据包otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。