TinySocket 1.0.0

dotnet add package TinySocket --version 1.0.0
                    
NuGet\Install-Package TinySocket -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TinySocket" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TinySocket" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="TinySocket" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TinySocket --version 1.0.0
                    
#r "nuget: TinySocket, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=TinySocket&version=1.0.0
                    
Install TinySocket as a Cake Addin
#tool nuget:?package=TinySocket&version=1.0.0
                    
Install TinySocket as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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将会是灾难性的。所以我将这个库定义的特别的简单。