Skip to content

jackjiang201804/MessageServer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MessageServer

MessageServer - 基于IOCP的消息服务器(可自定义扩展消息服务)



IO测试


项目信息

具体示例可参照Service中Common和TransferService的实现方式

CommonService是通用消息服务,支持自定义的消息实体对象,处理了粘包,其中消息协议如下

 Header   Body
+--------+----------+
| Length | Content  |
+--------+----------+

其中Header为消息头,长度固定为4位,表示后面消息体长度。Body为消息体,消息体通过二进制方式进行消息实体对象的序列化及反序列化

CommonClient是对应的客户端程序

TransferService是中转消息服务,对连接到服务的TCP请求中转到指定位置

AccessService本质也是中转服务,不过添加了对客户端IP的验证,用于对授权客户端的消息中转以及添加了授权过程防止抓包的流程

AccessClient是对应的客户端授权程序,用于和服务端进行授权验证

流程如下:
1.服务启动,清空之前授权客户端列表,读取Key,等待客户端连接
2.客户端连接后,服务端生成一个GUID,使用Key对GUID进行AES加密,将密文发给客户端,记录GUID并与该客户端进行绑定
3.客户端接收密文,使用自己的Key对密文进行解密后将明文发送给服务端
4.服务端将收到的明文与之前记录的GUID进行比对,一致则将该IP添加到信任列表,否则断开连接
5.中转服务与TransferService类似,只是在客户端连接时判断了该IP是否在信任列表中
在此流程下解决了两个问题:
1.仅对授权客户端进行消息中转
2.防止了授权过程中Key信息泄露

自定义服务面板请参照另一个项目QueueSystem中MessageService相关内容

效果如下


FlowViewer是流量监控程序

效果如下(图为IO测试效果)


JackChen
2018-02-05

About

消息服务器

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C# 100.0%