前言碎语

最近一直在做旧版本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. 注意资源的回收

相关文章:

  • SuperSocket, 可扩展的 Socket 服务器框架

  • SuperSocket源码解析之开篇

  • SuperSocket与Netty之实现protobuf协议,包括服务端和客户端

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


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

[SSCore] 开源dotnet core 版本 SuperSocket相关推荐

  1. centos 6.5 安装dotnet core 2.2

    .net core 官网地址 https://dotnet.microsoft.com/download 本次安装版本为.net core SDK v2.2.101 1.查看系统版本, 升级系统基本l ...

  2. dotnet core开源博客系统XBlog介绍

    XBlog是dotnet core平台下的个人博客开源系统,它只需要通过Copy的方式即可以部署到Linux和windows系统中:如果你有安全证书那只需要简单配置一下即可提供安全的Https服务.接 ...

  3. Dotnet Core应用跨框架版本运行

    有时候,我们真想用新框架,可也真不想改代码.   有一个前置的知识需要了解,就是微软 Dotnet Core 框架的版本体系.我前边的文章「Dotnet Core使用特定的SDK&Runtim ...

  4. Dotnet Core使用特定的SDKRuntime版本

    Dotnet Core的SDK版本总在升级,怎么使用一个特定的版本呢?   假期过完了,心情还在.今天写个短的. 一.前言 写这个是因为昨天刷微软官方文档,发现global.json在 SDK 3.0 ...

  5. xxl-job dotnet core executor执行器开源

    DotXxlJob [(github)https://github.com/xuanye/DotXxlJob][https://github.com/xuanye/DotXxlJob] xxl-job ...

  6. xxl-job 执行结果是空_xxljob dotnet core executor执行器开源

    DotXxlJob [(github)https://github.com/xuanye/DotXxlJob][https://github.com/xuanye/DotXxlJob] xxl-job ...

  7. dotnet core高吞吐Http api服务组件FastHttpApi

    简介 是dotNet core下基于Beetlex实现的一个高度精简化和高吞吐的HTTP API服务开源组件,它并没有完全实现HTTP SERVER的所有功能,而是只实现了在APP和WEB中提供数据服 ...

  8. dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程

    在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序.本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑.包括如何寻找 dotnet 运行 ...

  9. dotnet core 应用是如何跑起来的 通过AppHost理解运行过程

    在 dotnet 的输出路径里面,可以看到有一个有趣的可执行文件,这个可执行文件是如何在框架发布和独立发布的时候,找到 dotnet 程序的运行时的,这个可执行文件里面包含了哪些内容 在回答上面的问题 ...

最新文章

  1. 推荐抓虾在线RSS阅读
  2. “西邮漫记”--自由照耀中国
  3. short s1=1;s1+=1问题
  4. 昨天晚上,我在按摩店睡觉,一觉醒来,我的车不是我的了!
  5. 3dmax森林树木植物插件 Forest Pack Pro 6.3.1
  6. python 三角函数计算
  7. js 获取当前与一个月前的日期
  8. Core Java笔记------来自达内项目经理穆笛
  9. mysql事务6,MySQL6-事务
  10. 微信扫码关注公共号生成上下级关系,扫码之后的流程
  11. [Java 内存]Java内存组成
  12. 详解Javascript中正则表达式的使用
  13. 群晖NAS搭建portainer
  14. 数字化转型的避坑指南:细说数字化转型十二大坑
  15. Android集成微信支付
  16. Binary Cross Entropy
  17. AE 动效工作流技巧 —— 减少 Bodymovin 导出的 JSON 大小并提升性能(一)
  18. Verilog 语言 ——计数器
  19. 开源一个IDA小插件:修复VMP dump导入函数
  20. 基于STM32F1-C8T6无人机(一)——BF姿态展示(MPU6050(GYI-521))

热门文章

  1. Java中的Enum(枚举)用法介绍
  2. XHTML教会我的一些东西-1
  3. 为什么要实施服务器虚拟化
  4. Exchange2003管理
  5. 128位加密SSL证书
  6. 单元测试 | 如何在Mock时匹配匿名类型参数
  7. 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑
  8. asp.net core 6 新特性,支持HTTP/3 端点发布
  9. 你也可以搞懂的微服务第一篇——来自ThoughtWork的学习体验
  10. 为什么 IEnumerable 没有提供 ForEach ?