消息映射的服务器的设计与实现

简介:
服务器程序的设计有很多种方式,有多进程,多线程以及多进程/多线程混合方式,这些无论哪一种都是侦听->服 务的一种方式,主要强调以何种方式为客户提供服务,但是如果客户的需求种类非常多,不同需求之间的差异非常大的时候,另一个问题就浮上了水面,就是如何组 织这些所谓的不同的服务程序,采用回调函数的方式应该是第一个被想到的,回调函数很灵活,服务器的管理逻辑不用关注具体服务的处理逻辑,一切交给回调函数 来完成,唯一需要做的就是注册回调函数,接下来一个完美的设计就需要考虑如何设计服务器的管理流程。 
我们把客户端的需求称作命令,将服务器端对应该命令的处理函数称作命令处理函数,用户不同的命令就应该对应不同的命令处理函数,那么如何设计数据结构呢? 很显然的,我们应该让命令处理函数也就是回调函数和这个命令绑定在一起,除了这些需要绑定之外,由于命令是从远端传过来的,仿照网络协议的设计方式,同样 需要一个协议来识别合法命令,最起码格式要正确,因此还需要将命令码的格式,长度等信息和命令以及回调函数绑定在一起,到此为止,随便一个合格开发人员都 能想到的就是数据封装,就是将上面这些封装成一个结构或者一个类,还是用结构吧,因为我们只需要封装数据而不需要封装操作,于是就有了下面的结构体: 
struct DATAPROCESSDES 

{


 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273647

相关文章
|
网络安全 开发工具
树莓派公网服务器实现frp内网穿透
树莓派公网服务器实现frp内网穿透
树莓派公网服务器实现frp内网穿透
|
Ubuntu 安全 Linux
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
832 1
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
|
网络协议 Python
socket库:Python实现UDP客户和服务器通信
socket库:Python实现UDP客户和服务器通信
225 1
socket库:Python实现UDP客户和服务器通信
|
XML Java 数据库
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
|
网络协议
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
383 0
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
|
C# 容器
分布式服务器框架之Server.Common库中实现 秒级定时器
定时器模块是服务器中的常用组件,本文带你实现一个具有基本功能的定时器模块要想设计一个定时器模块,一般包含两部分,一个是定时器对象(ServerTimer),另一个管理定时器对象的管理者(TimerManager)也叫定时器容器;定时器使用了C#内System库里面的Timer定时器作为定时器的主驱动
分布式服务器框架之Server.Common库中实现 秒级定时器
|
PHP
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
446 0
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
|
机器学习/深度学习 网络协议 机器人
socket库:Python实现TCP/IP客户和服务器通信
socket库:Python实现TCP/IP客户和服务器通信
478 0
socket库:Python实现TCP/IP客户和服务器通信
|
消息中间件 网络协议 Linux
php实现tcp服务器
php实现tcp服务器
262 0
php实现tcp服务器
|
安全 网络协议 API
利用单片机实现天气服务器获取指定位置天气数据
大家好,今天主要和大家聊一聊,如何利用单片机从心知天气服务器上获取到指定位置的天气数据,咱们先来了解一下心知天气吧!​
209 0
利用单片机实现天气服务器获取指定位置天气数据