[SSCore] 开源dotnet core 版本 SuperSocket

前言碎语

最近一直在做旧版本dotnet 程序迁移至dotnet core的工作, 非常欣慰dotnet社区的蓬勃发展, 目前大部分的第三方类库或开源代码都有了dotnet core版本 或者可以方便的找到替代方案. 这其中我唯一觉得遗憾的是dotnet 社区大名鼎鼎的socket 通讯框架SuperSocket


SuperSocket是啥?

引用SuperSocket官方介绍:
SuperSocket是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket 服务器端软件,例如游戏服务器,GPS 服务器, 工业控制服务和数据采集服务器等等。

从技术的角度来看, SuperSocket是基于.NET IOCP的AsyncSocketEventArgs进行开发设计的Socket通讯框架. 既然是IOCP则必然是异步处理, 这样对编程人员的门槛则比较高. SuperSocket封装了对Socket连接的维护, 发送接收的程序逻辑. 这样对于一般的程序开发人员大大降低了编码门槛, 提高了开发效率.

动手来开源

一直受益于开源社区的各位大神, 也觉得自己该做些什么. 突然发现这是个机会, 便把SuperSocket代码转换为dotnet core 版本. 项目地址在这里SSCore. 目前还并没有完全把SuperSocket的全部逻辑转过来. 考虑到自己的一些需求, SuperSocket的命令模式并不适用.
所以主要是将Socket通信部分的代码拿过来, 根据自己对这个开源库所要面向场景的理解, 做了一些调整.

使用方法很简单, 首先获得一个SocketServer的实例,

    SocketServerBase server = new SocketServerBase();    
   server.NewClientAccepted += Server_NewClientAccepted;  
   server.Start();

然后定义一个客户端连接的委托实现, 主要是获取到当前Session实例

private static void Server_NewClientAccepted(Socket client, 
         ISocketSession session) {    Console.WriteLine("----- new client ------------");    AsyncSocketSession ass = session as AsyncSocketSession;    ass.SetReceiveHandler(arg =>    {        Console.WriteLine("----- new receive ------------");        string received = System.Text.Encoding.UTF8.GetString(arg.Buffer,
arg.Offset, arg.BytesTransferred);      
           Console.WriteLine(received);        ass.Send(received);    });}

这里面的SetReceiveHandler是为处理接收数据而实现的回调函数.

要使用好此框架, 主要遵循以下原则:

  1. AsyncSocketSession 为异步Socket连接处理的对象, 可方便的发送/接收

  2. 代码中可以对AsyncSocketSession 对象进行相应的管理

  3. 注意资源的回收

相关文章:

原文地址:http://www.jianshu.com/p/72b13fc4ae34


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

感谢大家对北风之神SOCKET框架的支持。鼓励。下面是北风之神 3.1的更新内容: 修正BUG: 1.ZYSocketSuper 读取 配置文件的最大连接数 读错问题。 2.ZYSocketSuper 无法断开客户端的问题。 3.BuffList 数据包解析丢失问题。 4.例1,例2.客户端断开忘记释放调用SOCKET.CLOSE()的问题 新增功能 1.添加了一个ReadBytes 构造函数,此函数实现了在数据包在读取前需要回调的方法传入。(可以用来解密,解压缩 等功能) 2.添加了一个BufferFormat 类的构造,此函数实现了在数据包在生成前需要回调的方法传入。(可以用来加密,压缩 等功能) 3.添加了BufferFormat.FormatFCA(object o,FDataExtraHandle dataExtra)静态方法。可以用来在类格式化成数据包的时候进行加密压缩等功能 4.添加了ZYSocket.Security 命名空间,里面有传统的AES,DES算法的加解密类 5.添加了ZYSocket.Compression命名空间,里面有通过Deflate算法压缩类 6.开发了ReadBytes.Data属性,为ReadBytes里面的BYTE[]对象。值得注意的是 ReadBytes.Length为数据包原始长度,如果要得到解压缩后的数据包长度,请访问ReadByte.Data.length 新增代码 加解密实例测试 项目:演示了 AES DES 以及Deflate 的使用方法。 例3 - 例2的加密版 项目:就是讲例2通过DES 加密进行通讯的例子 连接测试工具 项目:很多朋友问我要连接数量测试工具。我一起的真的丢了。找不到了。所以重新写了一个 例4 项目:好多人让我写一个发送文件的例子,现在能如愿以偿了 by luyikk@126.com BLOG:http://blog.csdn.net/luyikk QQ:547386448
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值