SuperSocket 是一个轻量级的可扩展套接字应用程序框架。 您可以使用它轻松构建始终连接的套接字应用程序,而无需考虑如何使用套接字、如何维护套接字连接以及套接字如何工作。 它是一个纯C#项目,旨在扩展,因此只要使用.NET语言开发,就可以轻松集成到您现有的系统中。
官网地址:Home - SuperSockethttps://www.supersocket.net/
官网主要分两个版本1.5/1.6,2.0
我这里使用了1.6版本,做了一个十分简单的功能,且是短连接,使用场景不是很频繁。值得说明的是客户端发送结束符后,结束符可以自定义,连接会自动断开。
一般硬件的协议都是“带起止符的协议”或者“头部格式固定并且包含内容长度的协议”,我这里是完全自定义的。
下面摘自SuperSocket1.6中文文档:SuperSocket 1.6 中文文档https://docs.supersocket.net/v1-6/zh-CN
在SuperSocket命令行协议是一种被广泛应用的协议。一些成熟的协议如 Telnet, SMTP, POP3 和 FTP 都是基于命令行协议的。 在SuperSocket 中, 如果你没有定义自己的协议,SuperSocket 将会使用命令行协议, 这会使这样的协议的开发变得很简单。命令行协议定义了每个请求必须以回车换行结尾 "\r\n"。
创建你的AppServer类型
public class TelnetServer : AppServer<TelnetSession>
{
protected override bool Setup(IRootConfig rootConfig, IServerConfig config)
{
return base.Setup(rootConfig, config);
}
protected override void OnStartup()
{
base.OnStartup();
}
protected override void OnStopped()
{
base.OnStopped();
}
}
服务器启动和停止代码
static void Main(string[] args)
{
Console.WriteLine("Press any key to start the server!");
Console.ReadKey();
Console.WriteLine();
var appServer = new AppServer();
//Setup the appServer
if (!appServer.Setup(2012)) //Setup with listening port
{
Console.WriteLine("Failed to setup!");
Console.ReadKey();
return;
}
Console.WriteLine();
//Try to start the appServer
if (!appServer.Start())
{
Console.WriteLine("Failed to start!");
Console.ReadKey();
return;
}
Console.WriteLine("The server started successfully, press key 'q' to stop it!");
while (Console.ReadKey().KeyChar != 'q')
{
Console.WriteLine();
continue;
}
//Stop the appServer
appServer.Stop();
Console.WriteLine("The server was stopped!");
Console.ReadKey();
}