github开源推荐:SuperSocket, 可扩展的 Socket 服务器框架

1、简介

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

2、特性

高性能的事件驱动通信;

非常简单易用; 你只需要通过创建几个类就能获得一个健壮的 Socket 服务器;

内置的命令行协议让你能够迅速创建一个网络命令行接口服务器;

强大且高性能的协议解析实现工具帮你简化了网络数据的分析工作;

灵活的配置功能和友好的配置 API;

多监听器支持; 让你在一个服务器实例内监听多个端口;

多服务器实例托管的支持让你从容面对复杂的部署需求;

应用程序域和进程级别的隔离能够满足你大部分的宿主场景;

内置的 SSL/TLS 加密支持;

会话级别的发送队列能够让你通过会话并发的发送数据,并保持高性能和可控性;

SuperSocket 的命令处理模式让你的业务逻辑更清晰,更有条理;

优良的可扩展 API 支持: Command Filter, Connection Filter, Command Loader;

可替换的日志架构允许你使用你喜欢的日志组件;

动态语言的支持; 允许你用 Python 之类的脚本语言来实现命令;

与 Mono/Linux 保持二进制级别的兼容;

Windows Azure 的支持;

内置你可以直接用于 Flash 或 Silverlight 客户端的 Socket 策略服务器;

3、集成

与 ASP.Net Core 网站集成

是的,SuperSocket 可以与 ASP.NET Core 网站并排运行。您应该做的是将 SuperSocket 注册到 ASP.NET Core 的主机构建器中,并将选项留在配置文件中或通过代码。

在 Program 类中,为 SuperSocket 添加更多代码行:

//don't forget the usingsusing SuperSocket;using SuperSocket.ProtoBase;public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).AsSuperSocketHostBuilder<TextPackageInfo, LinePipelineFilter>().UsePackageHandler(async (s, p) =>{// echo message back to clientawait s.SendAsync(Encoding.UTF8.GetBytes(p.Text + "\r\n"));});

并在配置文件“appsettings.json”中保留服务器选项:

{"Logging": {"LogLevel": {"Default": "Information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"serverOptions": {"name": "TestServer","listeners": [{"ip": "Any","port": 4040}]},"AllowedHosts": "*"}

4、开源地址

地址

https://github.com/kerryjiang/SuperSocket

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言的文件处理

所谓“文件”一般指存储在外部介质上数据的集合。根据数据的组织形式&#xff0c;可分为ASCII文件和二进制文件。ASCII文件&#xff0c;又称为文本文件&#xff0c;它的每一个字节存放一个ASCII代码&#xff0c;代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式…

可以自发热的袜子,穿上暖3.9℃,这个冬天不再怕脚冷!

▲点击查看最近天气一天比一天冷&#xff0c;相信盆友们和小爆一样已经囤了不少保暖用品&#xff0c;秋衣秋裤棉拖鞋都安排好了&#xff01;等等&#xff0c;是不是有什么重要东西忘记了&#xff1f;平时出门&#xff0c;好像不穿棉拖鞋啊&#xff01;哎&#xff0c;还缺了一打…

QML的import目录爬坑记录

为什么80%的码农都做不了架构师&#xff1f;>>> 默认添加在.qrc文件里的同目录下qml文件&#xff0c;不需要添加import声明&#xff1b; 想导入自定义的组件&#xff1b; //只需要import到目录即可, //注意是qml组件文件所在的目录 import "./Dir" 但是…

收集css属性.

为什么80%的码农都做不了架构师&#xff1f;>>> body:before {content: "";position: fixed;top: -10px;left: 0;width: 100%;height: 10px;box-shadow: 0px 0px 10px rgba(0,0,0,.8);z-index: 100; } 浏览器头部阴影不支持ie .clearfix:after {clear: b…

mysql相交_MySQL相交

MySQL的相交INTERSECT运算符是SQL中的一种SET操作&#xff0c;包括UNION&#xff0c;UNION ALL&#xff0c;MINUS和INTERSECT。 INTERSECT运算符从两个或多个表中返回两组或公共记录中的不同(公共)元素。换句话说&#xff0c;它比较两个查询获得的结果并产生唯一的行&#xff0…

Jquery常用技巧总结

Jquery常用技巧总结 1、页面元素引用 jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法&#xff0c;且返回的对象为jquery对象&#xff08;集合对象&#xff09;;2、Jquery对象与dom对象的转换 普通的dom对象一般可以通过$()转换成jq…

年轻人也太禁不起诱惑了吧?

1 好喝就够了&#xff01;▼2 为啥乌布雷纹了一个张译&#xff1f;&#xff01;▼3 美伢&#xff1a;小新&#xff0c;把我法宝拿来&#xff01;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 注入了灵魂的神作&#xff01;&#xff08;素材来源网络&#xff0c…

认清几种视频接口标准---无私奉献版

VGA&#xff0c;DVI和HDMI是三种视频传输标准&#xff0c;从而形成了以三种标准为基础的三种接口。所以他们是标准名称也是接口名称。在现在我们的计算机和电视设备上经常能见到。甚至有的显卡和显示器是三个接口共存的。大家对着三个名词并不陌生&#xff0c;尤其是VGA更是耳熟…

红黑树数据结构剖析

红黑树数据结构剖析红黑树是计算机科学内比较常用的一种数据结构&#xff0c;它使得对数据的搜索&#xff0c;插入和删除操作都能保持在O(lgn)的时间复杂度。然而&#xff0c;相比于一般的数据结构&#xff0c;红黑树的实现的难度有所增加。网络上关于红黑树的实现资料汗牛充栋…

python 多分类情感_python 文本情感分类

对于一个简单的文本情感分类来说&#xff0c;其实就是一个二分类&#xff0c;这篇博客主要讲述的是使用scikit-learn来做文本情感分类。分类主要分为两步&#xff1a;1)训练&#xff0c;主要根据训练集来学习分类模型的规则。2)分类&#xff0c;先用已知的测试集评估分类的准确…

.NET GC 实时监控工具 dotnet gcmon 介绍

今天介绍一个新的诊断工具 dotnet-gcmon, 也是全局 .NET CLI 工具, 它可以监控到 .NET 程序的 GC, 能获取到的信息也很详细, 另外 maoni 大佬也是其中的开发者之一。安装 gcmon和其他的 dotnet 诊断工具一样, 你可以使用以下命令&#xff0c;进行全局安装dotnet tool install -…

js封装map

js封装map 在大三的时候&#xff0c;做电子商务网站的时候&#xff0c;前端页面打包过来的数据都是json格式&#xff0c;为了更好的体验&#xff0c;有的时候我们需要封装url,需要我点击回退的时候&#xff0c;url地址栏目不变&#xff0c;其实我们在Android或者java里面通常也…

NYOJ-45 棋盘覆盖

棋盘覆盖 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述在一个2k2k&#xff08;1<k<100&#xff09;的棋盘中恰有一方格被覆盖&#xff0c;如图1&#xff08;k2时&#xff09;&#xff0c;现用一缺角的22方格&#xff08;图2为其中…

你绝对干过的15件傻事儿

全世界只有3.14 % 的人关注了爆炸吧知识首先来看你绝对干过的15件傻事儿&#xff0c;别不承认&#xff01;把树叶弄成这样喝酸奶舔盖子吃完棒冰继续含着棍子咬拉链尝试用笔写一首歌比如《生日快乐》对着电风扇说话或喊叫刮墙壁上的油漆过斑马线只踩白色部分猫打哈欠时伸手指进去…

Python logging模块详解

1.简单的将日志打印到屏幕 import logginglogging.debug(This is debug message) logging.info(This is info message) logging.warning(This is warning message)屏幕上打印: WARNING:root:This is warning message默认情况下&#xff0c;logging将日志打印到屏幕&#xff0c;…

java什么时候可能产生内存溢出_哪些场景会产生OOM?怎么解决?

Java技术栈www.javastack.cn关注阅读更多优质文章这个面试题是一个朋友在面试的时候碰到的&#xff0c;什么时候会抛出OutOfMemery异常呢&#xff1f;初看好像挺简单的&#xff0c;其实深究起来考察的是对整个JVM的了解&#xff0c;而且这个问题从网上可以翻到一些乱七八糟的答…

如何通过 Linq 将集合拆成多个块?

咨询区 BlakeH&#xff1a;请问是否可以用 linq 按序生成带有多个固定 size 的块&#xff1f;我的理想情况下还可以对这些 块 进行操作。回答区 Sergey Berezovskiy&#xff1a;说实话&#xff0c;你不需要写任何代码&#xff0c;使用 MoreLINQ 中的批次方法即可&#xff0c;它…

解决WP7的32位图像渐变色色阶问题

做游戏时发现背景图色阶现象严重&#xff0c;想了想会不会是显卡色深问题&#xff0c;于是加了下面一段代码&#xff0c;结果解决这个问题。 graphics.PreferredBackBufferFormat Microsoft.Xna.Framework.Graphics.SurfaceFormat.Color; 调试时发现PreferredBackBufferFormat…

年仅53岁,因连续工作、过度劳累,这位抗疫幕后的科研专家去世

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;募格学术综合整理新华社、科技日报 记者 张佳星、长江日报-长江网据新华社报道&#xff0c;在抗击新冠肺炎疫情期间&#xff0c;因连续工作、过度劳累&#xff0c;中国医学科学院病原生物学研究所研究员赵振东教授因…

智能流控

关键应用太慢&#xff0c;带宽用不好&#xff1f;AppEx 智能流控帮你轻松搞定&#xff01; 现代企业和机构的运转越来越依赖网络的畅通。而网络应用的日益繁杂经常让有限的带宽难以招架。企业和机构经常面临的一个问题是员工上网流量导致网络出口拥塞&#xff0c;从而严重影响企…