TinySocket 1.0.0
dotnet add package TinySocket --version 1.0.0
NuGet\Install-Package TinySocket -Version 1.0.0
<PackageReference Include="TinySocket" Version="1.0.0" />
<PackageVersion Include="TinySocket" Version="1.0.0" />
<PackageReference Include="TinySocket" />
paket add TinySocket --version 1.0.0
#r "nuget: TinySocket, 1.0.0"
#addin nuget:?package=TinySocket&version=1.0.0
#tool nuget:?package=TinySocket&version=1.0.0
TinySocket
a socket server library
我的本意是简单封装一个基本的TCP、UDP通信服务器框架。 虽然已经有无数类似的SOCKET服务器封装项目,但是我还是想按我的想法写一个。 那么它应该有这样的特点:
- 轻量级。尽量的轻,你只需要将几个类文件复制到你的代码中去就可以用,不需要再涉及一些第三方的库。
- 最小限度的封装。它不涉及到通信协议及其它的任何业务,只是一个单纯的I/O框架。
- 容易理解和修改。
- 半成品,它不能在你的代码里直接new出来用。需要你至少做一次最简单的继承,以便让你熟悉代码。
一个庞大的开源代码洋洋洒洒数万行,许多代码不是用户想要的,如果裁剪那将是一个非常辛苦的过程。并且有时候很多开源代码会面临无人维护的结果,出现BUG将会是灾难性的。所以我将这个库定义为精简。
使用例程:
#region 这里实现一个最简单的TCP通信服务器
//继承TcpServer
class MyTcpServer : TinySocketServer.TCP.TcpServer<MyTcpServer, MyTcpSession> { }
//继承TcpSession
class MyTcpSession : TinySocketServer.TCP.TcpSession<MyTcpServer, MyTcpSession>
{
#region 在这里处理你的业务
protected override void On_Close()
{
Console.WriteLine("TCP会话关闭" + this.RemoteHost);
}
protected override void On_Receive(Span<byte> data)
{
var tmp = data.ToArray();
Console.WriteLine("收到TCP会话的数据:{0}\r\n{1}", this.RemoteHost, BitConverter.ToString(tmp));
//将数据发回去
tmp[0] = (byte)'A';
Send(tmp, 0, tmp.Length);
}
#endregion
}
#endregion
运行
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello TinySocketServer!");
//本地侦听端口
var localPoint = new IPEndPoint(IPAddress.Any, 9090);
var tcp_server = new MyTcpServer();
//启用TCP服务器,侦听地下和端口值 和上面的UDP一样
tcp_server.Start(localPoint);
while (true)
{
if (Console.ReadLine().ToUpper() == "EXIT") break;
}
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Memory (>= 4.5.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 479 | 8/23/2020 |
我的本意是简单封装一个基本的TCP、UDP通信服务器框架。 虽然已经有无数类似的SOCKET服务器封装项目,但是我还是想按我的想法写一个。 那么它应该有这样的特点:
轻量级。尽量的轻,你只需要将几个类文件复制到你的代码中去就可以用,不需要再涉及一些第三方的库。
最小限度的封装。它不涉及到通信协议及其它的任何业务,只是一个单纯的IO框架。
容易理解和修改。
半成品,它不能在你的代码里直接new出来用。需要你至少做一次最简单的继承,以便让你熟悉代码。
一个庞大的开源代码洋洋洒洒数万行,许多代码不是用户想要的,如果裁剪那将是一个非常辛苦的过程。并且有时候很多开源代码会面临无人维护的结果,出现BUG将会是灾难性的。所以我将这个库定义的特别的简单。