Skip to content

Class TcpServerAsync

Namespace: Tool.Sockets.TcpHelper
Assembly: Tool.Net.dll

封装一个底层异步TCP对象(服务端)IpV4

csharp
public class TcpServerAsync : NetworkListener<Socket>, INetworkListener<Socket>, INetworkListener, INetworkCore, IDisposable

Inheritance

objectEnServerEventDriveNetworkListener<Socket>TcpServerAsync

Implements

INetworkListener<Socket>, INetworkListener, INetworkCore, IDisposable

Inherited Members

NetworkListener<Socket>.ListClient, NetworkListener<Socket>.Server, NetworkListener<Socket>.Millisecond, NetworkListener<Socket>.IsClose, NetworkListener<Socket>.IsThreadPool, NetworkListener<Socket>.BufferSize, NetworkListener<Socket>.CreateSendBytes(Socket, int), NetworkListener<Socket>.Dispose(), NetworkListener<Socket>.OnComplete(in UserKey, EnServer), NetworkListener<Socket>.SendAsync(SendBytes<Socket>), NetworkListener<Socket>.SetCompleted(CompletedEvent<EnServer>), NetworkListener<Socket>.SetReceived(ReceiveEvent<Socket>), NetworkListener<Socket>.StartAsync(string, int), NetworkListener<Socket>.Stop(), NetworkListener<Socket>.TrySocket(in UserKey, out Socket), EnServerEventDrive.OnInterceptor(EnServer, bool), EnServerEventDrive.OnIsQueue(EnServer, bool), EnServerEventDrive.IsEvent(EnServer), EnServerEventDrive.IsQueue(EnServer), EnServerEventDrive.OpenAllEvent(), EnServerEventDrive.OpenAllQueue(), EnServerEventDrive.CloseAllEvent(), EnServerEventDrive.CloseAllQueue(), object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

Extension Methods

ObjectExtension.Add<T>(object, object, object), ObjectExtension.CopyEntity(object, object, params string[]), ObjectExtension.EntityToJson(object), ObjectExtension.EntityToJson(object, bool), ObjectExtension.EntityToJson(object, bool, string), DictionaryExtension.GetDictionary(object), TypeExtension.GetFieldKey(object, string, out bool), TypeExtension.GetFieldKey<T>(object, string, out bool), TypeExtension.GetFieldKey(object, Type, string, out bool), ObjectExtension.GetIntPtr(object), ObjectExtension.GetIntPtrInt(object), TypeExtension.GetPropertieFind(object, string, bool), TypeExtension.GetProperties(object), TypeExtension.GetPropertyKey(object, string, out bool), TypeExtension.GetPropertyKey<T>(object, string, out bool), TypeExtension.GetPropertyKey(object, Type, string, out bool), TypeExtension.GetValue(object, PropertyDescriptor), TypeExtension.GetValue(object, string, bool), TypeExtension.GetValue(object, string), ObjectExtension.Read<T>(object, object, int, int), ObjectExtension.Read<T>(object, int, object, int, int), DictionaryExtension.SetDictionary(object, IDictionary<string, object>), TypeExtension.SetFieldKey(object, string, object), TypeExtension.SetFieldKey<T>(object, string, object), TypeExtension.SetFieldKey(object, Type, string, object), TypeExtension.SetPropertyKey(object, string, object), TypeExtension.SetPropertyKey<T>(object, string, object), TypeExtension.SetPropertyKey(object, Type, string, object), TypeExtension.SetValue(object, PropertyDescriptor, object), TypeExtension.SetValue(object, string, object, bool), TypeExtension.SetValue(object, string, object), ObjectExtension.ToBase64String(object), ObjectExtension.ToBytes(object), ObjectExtension.ToBytes(object, out Type), DictionaryExtension.ToDictionary(object), DictionaryExtension.ToDictionary<T>(object), DictionaryExtension.ToIDictionary(object), DictionaryExtension.ToIDictionary<T>(object), ObjectExtension.ToJson(object), ObjectExtension.ToJson(object, JsonSerializerOptions), ObjectExtension.ToJsonWeb(object), ObjectExtension.ToJsonWeb(object, Action<JsonSerializerOptions>), ObjectExtension.ToTryVar<T>(object, T), ObjectExtension.ToVar<T>(object), ObjectExtension.ToVar(object, Type, bool), ObjectExtension.ToVar(object, string), ObjectExtension.ToXml(object)

Remarks

代码由逆血提供支持

Constructors

TcpServerAsync()

创建一个 服务器类

csharp
public TcpServerAsync()

TcpServerAsync(NetBufferSize)

创建一个 服务器类,并确定是否开启框架验证模式保证数据唯一性。

csharp
public TcpServerAsync(NetBufferSize size)

Parameters

size NetBufferSize

数据缓冲区大小

TcpServerAsync(NetBufferSize, bool)

创建一个 服务器类,确认模式和设置流大小

csharp
public TcpServerAsync(NetBufferSize size, bool OnlyData)

Parameters

size NetBufferSize

数据缓冲区大小

OnlyData bool

是否启动框架模式

Properties

IsClose

标识服务端连接是否关闭

csharp
public override bool IsClose { get; }

Property Value

bool

ListClient

已建立连接的集合 key:UserKey value:Socket

csharp
public override IReadOnlyDictionary<UserKey, Socket> ListClient { get; }

Property Value

IReadOnlyDictionary<UserKey, Socket>

Millisecond

监听控制毫秒

csharp
public override int Millisecond { get; set; }

Property Value

int

OnlyData

是否保证数据唯一性,开启后将采用框架验证保证其每次的数据唯一性,(如果不满足数据条件将直接与其断开连接)

csharp
public bool OnlyData { get; }

Property Value

bool

Server

服务器创建时的信息

csharp
public override UserKey Server { get; }

Property Value

UserKey

Methods

CreateSendBytes(Ipv4Port, int)

创建数据发送空间

csharp
public SendBytes<Socket> CreateSendBytes(Ipv4Port key, int length)

Parameters

key Ipv4Port

接收者信息

length int

数据大小

Returns

SendBytes<Socket>

Exceptions

Exception

连接已中断

CreateSendBytes(Socket, int)

创建数据发送空间

csharp
public override SendBytes<Socket> CreateSendBytes(Socket client, int length = 0)

Parameters

client Socket

收数据的对象

length int

数据大小

Returns

SendBytes<Socket>

Dispose()

关闭连接,回收相关资源

csharp
public override void Dispose()

OnComplete(in UserKey, EnServer)

可供开发重写的事件方法

csharp
public override ValueTask<IGetQueOnEnum> OnComplete(in UserKey IpPort, EnServer enAction)

Parameters

IpPort UserKey

指定发送对象

enAction EnServer

消息类型

Returns

ValueTask<IGetQueOnEnum>

SendAsync(Ipv4Port, string)

开始异步发送数据

csharp
public ValueTask SendAsync(Ipv4Port key, string msg)

Parameters

key Ipv4Port

客户端的ip地址和端口号

msg string

要发送的内容

Returns

ValueTask

SendAsync(Ipv4Port, ArraySegment<byte>)

开始异步发送数据

csharp
public ValueTask SendAsync(Ipv4Port key, ArraySegment<byte> listData)

Parameters

key Ipv4Port

客户端的ip地址和端口号

listData ArraySegment<byte>

要发送的内容

Returns

ValueTask

SendAsync(Socket, string)

开始异步发送数据

csharp
public ValueTask SendAsync(Socket client, string msg)

Parameters

client Socket

Socket对象

msg string

要发送的内容

Returns

ValueTask

SendAsync(Socket, ArraySegment<byte>)

开始异步发送数据

csharp
public ValueTask SendAsync(Socket client, ArraySegment<byte> listData)

Parameters

client Socket

Socket对象

listData ArraySegment<byte>

要发送的内容

Returns

ValueTask

SendAsync(SendBytes<Socket>)

异步发送消息

csharp
public override ValueTask SendAsync(SendBytes<Socket> sendBytes)

Parameters

sendBytes SendBytes<Socket>

数据包

Returns

ValueTask

Exceptions

ArgumentException

OnlyData验证失败

Exception

连接已断开

SetCompleted(CompletedEvent<EnServer>)

连接、发送、关闭事件

csharp
public override void SetCompleted(CompletedEvent<EnServer> Completed)

Parameters

Completed CompletedEvent<EnServer>

SetReceived(ReceiveEvent<Socket>)

接收到数据事件

csharp
public override void SetReceived(ReceiveEvent<Socket> Received)

Parameters

Received ReceiveEvent<Socket>

StartAsync(int)

开始异步监听本机127.0.0.1的端口号

csharp
public Task StartAsync(int port)

Parameters

port int

Returns

Task

StartAsync(string, int)

开始异步监听ip地址的端口

csharp
public override Task StartAsync(string ip, int port)

Parameters

ip string

port int

Returns

Task

Stop()

TCP关闭

csharp
public override void Stop()

TrySocket(in UserKey, out Socket)

根据IP:Port获取对应的连接对象

csharp
public override bool TrySocket(in UserKey key, out Socket client)

Parameters

key UserKey

IP:Port

client Socket

连接对象

Returns

bool

返回成功状态

基于Apache-2.0协议开源