雀恰营销
专注中国网络营销推广

Socket开发框架之框架设计及分析

Socket开发框架之框架设计及分析

虽然越来越多的企业倾向于在APP应用、Web应用、Winform应用等大趋势下开发这些应用系统,但在某些场合下Socket的应用还是很有必要的,比如一些停车场终端设备的接入,农业或水利、压力监测等领域的设备数据采集,以及常见的IM(即时通讯,如腾讯QQ、阿里旺旺等)客户端,都可以使用Socket框架进行相关数据采集和信息交流实用性方面,Socket应用可以作为APP应用、Web应用、Winform应用的补充。

1、Socket应用场景

一般情况下,客户端和服务端连接Socket时,需要进行数据交互,即后台提供数据查询或写入相关操作,其应用场景也有后台一个应用数据库支持,如如下所示。

Socket服务器与客户端的通信原理如下。客户端通过服务器地址和端口发起 Socket 连接。服务端收到Socket客户端的请求后,新建一个Socket连接进行通信管理,双方基于Socket协议进行数据交互。

2、Socket 框架设计思路

Socket开发是通信底层的开发,.NET本身也提供了非常丰富的类来实现Socket的开发。 Socket框架应该对这些基本功能进行了很好的封装,已经达到了一、的高效使用。

要掌握或理解Socket开发,你必须了解下面描述的场景和知识。

对于以上内容Socket开发框架之框架设计及分析,可以将具有以下功能的操作类封装为通用基类:

1)Socket 客户端基类

我们知道 Socket 通信分为客户端和服务器,它们处理不同的事情。因此,为了实现更好的代码复用,我们在此基础上进行了不同的封装。对于Socket客户端类,我们主要需要提供基本的Socket连接和断开、接收和发送、数据包解包等常规操作,所以我们封装了一个客户端基类BaseSocketClient。

但是为了根据不同的应用客户端实现不同的业务通信,我们可以在服务端接收和处理不同的客户端,所以需要对Socket客户端进行派生和扩展,比如这个框架增加了一个中心Socket客户端,一个分支Socket客户端,一个桥接客户端(可以实现数据转发功能)。

2)套接字服务器基类

相对于Socket客户端基类,我们还创建了一个Socket Server端基类,通过继承框架设计,我们可以用来简化代码重复。服务器基类称为TCP服务器管理基类BaseSocketServer,负责在独立线程中监听指定端口。如果有客户端连接进来,就会进行相应的处理。

同样,我们还派生了两个服务器的基类,方便不同Socket客户端的差异化处理。比如对应上面的中心客户端类 ClientOfCall ,我们添加一个对应的服务端类 ServerForCall ,其他类似,继承关系如下。

另外,由于我们允许不同的Socket客户端类(如ClientOfCall、ClientOfShop)的访问,所以服务器端也会有相应的Socket服务端类(ServerForCall、ServerForShop)监听不同的端口。一旦自己的端口有 Socket 访问,服务端类就会被分配给不同的 Socket 客户端管理类来处理它们之间的关系和数据,这就进一步引入了客户端管理类的概念,对应不同的 Socket 客户端。

这里还根据需要定义了一个Socket客户端管理基类BaseClientManager。这个T代表不同的客户端,这样我们就可以派生出两个不同的客户端管理类CallClientManager和ShopClientManager。它们的继承关系如下所示。

3)数据接收处理基类

不同的Socket客户端连接到服务端后,服务端为对应的Socket数据通信开辟一个新的线程,那么对于数据通信的管理,我们可以为不同的Socket客户端定制一个对应的数据接收处理类来处理连接到特定 Socket 客户端的数据。 .

这里还根据需要定义了一个用于数据接收的基类BaseReceiver。同样,我们派生出几个具体的数据处理类,如ReceivedForCall、ReceivedForShop和ReceivedForBridge,分别对应不同的客户端。它们的继承关系如下所示。

3、框架界面设计

1)参数配置

Socket服务器需要一些参数来确定监听的IP地址和端口,以及数据库的连接信息,各种数据的处理时间间隔等参数,所以需要提供更好的管理接口管理。本框架采用基于本地配置文件的参数管理方式进行管理。参数界面如下。

客户端还需要配置一些参数来确定连接的服务器IP和端口信息,如下配置界面所示。

socket服务器监控界面需要展示一些基本的状态和socket连接等基本信息,作为我们对整体状态的了解,而这些信息可以同时记录到日志中供我们查看分析。

除了上面的整体设计之外,还有一个地方需要详细介绍框架设计,就是Socket传输消息的封装和解包,一般Sockets的Socket应用大多使用基于序列的方法位置和字节长度来确定相关内容。这些过程对于我们分析复杂的协议内容来说是一场灾难。一旦协议位置发生变化或需要特殊处理,就很容易了。错误,而且大部分代码很多地方都是数值变量,非常不方便分析和理解。

如果整体的内容采用更灵活的消息格式,比如JSON格式,那么我们可以很好的封装消息并解包解析,交给第三方JSON进行解析,我们只需要关注具体的消息处理逻辑,协议的扩展,像JSON一样Socket开发框架之框架设计及分析,可以自由灵活,瞬间,整个世界都变得很安静。由于篇幅原因,下一篇文章会介绍JSON格式的消息处理流程。

除了上述场景外,我们还需要考虑用户消息的加密和验证等内容处理,从而实现安全完整的消息处理,我们可以使用RSA公钥密码系统。平台通过发送平台RSA公钥消息通知终端自己的RSA公钥,终端回复终端RSA公钥消息,反之亦然。这样平台和终端的消息可以用自己的私钥加密,对方的公钥可以解密。

本文转载自博主吴华聪的博客,原文链接:Socket开发框架的框架设计与分析,如需转载请联系原博主。

赞(0) 打赏
未经允许不得转载:雀恰营销 » Socket开发框架之框架设计及分析
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

文章对你有帮助就赞助我一下吧

支付宝扫一扫打赏

微信扫一扫打赏