Class TcpServerAsync
Namespace: Tool.Sockets.TcpHelper
Assembly: Tool.Net.dll
封装一个底层异步TCP对象(服务端)IpV4
public class TcpServerAsync : NetworkListener<Socket>, INetworkListener<Socket>, INetworkListener, INetworkCore, IDisposableInheritance
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()
创建一个 服务器类
public TcpServerAsync()TcpServerAsync(NetBufferSize)
创建一个 服务器类,并确定是否开启框架验证模式保证数据唯一性。
public TcpServerAsync(NetBufferSize size)Parameters
size NetBufferSize
数据缓冲区大小
TcpServerAsync(NetBufferSize, bool)
创建一个 服务器类,确认模式和设置流大小
public TcpServerAsync(NetBufferSize size, bool OnlyData)Parameters
size NetBufferSize
数据缓冲区大小
OnlyData bool
是否启动框架模式
Properties
IsClose
标识服务端连接是否关闭
public override bool IsClose { get; }Property Value
ListClient
已建立连接的集合 key:UserKey value:Socket
public override IReadOnlyDictionary<UserKey, Socket> ListClient { get; }Property Value
IReadOnlyDictionary<UserKey, Socket>
Millisecond
监听控制毫秒
public override int Millisecond { get; set; }Property Value
OnlyData
是否保证数据唯一性,开启后将采用框架验证保证其每次的数据唯一性,(如果不满足数据条件将直接与其断开连接)
public bool OnlyData { get; }Property Value
Server
服务器创建时的信息
public override UserKey Server { get; }Property Value
Methods
CreateSendBytes(Ipv4Port, int)
创建数据发送空间
public SendBytes<Socket> CreateSendBytes(Ipv4Port key, int length)Parameters
key Ipv4Port
接收者信息
length int
数据大小
Returns
Exceptions
连接已中断
CreateSendBytes(Socket, int)
创建数据发送空间
public override SendBytes<Socket> CreateSendBytes(Socket client, int length = 0)Parameters
client Socket
收数据的对象
length int
数据大小
Returns
Dispose()
关闭连接,回收相关资源
public override void Dispose()OnComplete(in UserKey, EnServer)
可供开发重写的事件方法
public override ValueTask<IGetQueOnEnum> OnComplete(in UserKey IpPort, EnServer enAction)Parameters
IpPort UserKey
指定发送对象
enAction EnServer
消息类型
Returns
SendAsync(Ipv4Port, string)
开始异步发送数据
public ValueTask SendAsync(Ipv4Port key, string msg)Parameters
key Ipv4Port
客户端的ip地址和端口号
msg string
要发送的内容
Returns
SendAsync(Ipv4Port, ArraySegment<byte>)
开始异步发送数据
public ValueTask SendAsync(Ipv4Port key, ArraySegment<byte> listData)Parameters
key Ipv4Port
客户端的ip地址和端口号
listData ArraySegment<byte>
要发送的内容
Returns
SendAsync(Socket, string)
开始异步发送数据
public ValueTask SendAsync(Socket client, string msg)Parameters
client Socket
Socket对象
msg string
要发送的内容
Returns
SendAsync(Socket, ArraySegment<byte>)
开始异步发送数据
public ValueTask SendAsync(Socket client, ArraySegment<byte> listData)Parameters
client Socket
Socket对象
listData ArraySegment<byte>
要发送的内容
Returns
SendAsync(SendBytes<Socket>)
异步发送消息
public override ValueTask SendAsync(SendBytes<Socket> sendBytes)Parameters
数据包
Returns
Exceptions
OnlyData验证失败
连接已断开
SetCompleted(CompletedEvent<EnServer>)
连接、发送、关闭事件
public override void SetCompleted(CompletedEvent<EnServer> Completed)Parameters
Completed CompletedEvent<EnServer>
SetReceived(ReceiveEvent<Socket>)
接收到数据事件
public override void SetReceived(ReceiveEvent<Socket> Received)Parameters
Received ReceiveEvent<Socket>
StartAsync(int)
开始异步监听本机127.0.0.1的端口号
public Task StartAsync(int port)Parameters
port int
Returns
StartAsync(string, int)
开始异步监听ip地址的端口
public override Task StartAsync(string ip, int port)Parameters
ip string
port int
Returns
Stop()
TCP关闭
public override void Stop()TrySocket(in UserKey, out Socket)
根据IP:Port获取对应的连接对象
public override bool TrySocket(in UserKey key, out Socket client)Parameters
key UserKey
IP:Port
client Socket
连接对象
Returns
返回成功状态