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 ​

object ← EnServerEventDrive ← NetworkListener<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协议开源