Class TcpClientAsync
Namespace: Tool.Sockets.TcpHelper
Assembly: Tool.Net.dll
封装一个底层异步TCP对象(客户端)IpV4
public class TcpClientAsync : NetworkConnect<Socket>, INetworkConnect<Socket>, INetworkConnect, INetworkCore, IDisposableInheritance
object ← EnClientEventDrive ← NetworkConnect<Socket> ← TcpClientAsync
Implements
INetworkConnect<Socket>, INetworkConnect, INetworkCore, IDisposable
Inherited Members
NetworkConnect<Socket>.LocalPoint, NetworkConnect<Socket>.Connected, NetworkConnect<Socket>.Server, NetworkConnect<Socket>.Millisecond, NetworkConnect<Socket>.IsClose, NetworkConnect<Socket>.IsThreadPool, NetworkConnect<Socket>.BufferSize, NetworkConnect<Socket>.Close(), NetworkConnect<Socket>.ConnectAsync(string, int), NetworkConnect<Socket>.CreateSendBytes(int), NetworkConnect<Socket>.Dispose(), NetworkConnect<Socket>.OnComplete(in UserKey, EnClient), NetworkConnect<Socket>.Reconnection(), NetworkConnect<Socket>.SendAsync(SendBytes<Socket>), NetworkConnect<Socket>.SetCompleted(CompletedEvent<EnClient>), NetworkConnect<Socket>.SetReceived(ReceiveEvent<Socket>), EnClientEventDrive.OnInterceptor(EnClient, bool), EnClientEventDrive.OnIsQueue(EnClient, bool), EnClientEventDrive.IsEvent(EnClient), EnClientEventDrive.IsQueue(EnClient), EnClientEventDrive.OpenAllEvent(), EnClientEventDrive.OpenAllQueue(), EnClientEventDrive.CloseAllEvent(), EnClientEventDrive.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), P2pClientAsync.P2PConnectAsync(TcpClientAsync, Ipv4Port, Ipv4Port, int), 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
TcpClientAsync()
创建一个 客户端类
public TcpClientAsync()TcpClientAsync(NetBufferSize)
创建一个 客户端类,确认模式和设置流大小
public TcpClientAsync(NetBufferSize bufferSize)Parameters
bufferSize NetBufferSize
包大小枚举
TcpClientAsync(NetBufferSize, bool)
创建一个 客户端类,确认模式和设置流大小
public TcpClientAsync(NetBufferSize bufferSize, bool OnlyData)Parameters
bufferSize NetBufferSize
包大小枚举
OnlyData bool
是否启动框架模式
TcpClientAsync(NetBufferSize, bool, bool)
创建一个 客户端类,确认模式和设置流大小
public TcpClientAsync(NetBufferSize bufferSize, bool OnlyData, bool IsReconnect)Parameters
bufferSize NetBufferSize
包大小枚举
OnlyData bool
是否启动框架模式
IsReconnect bool
是否在与服务器断开后主动重连?
Properties
Client
TCP 服务对象
public Socket Client { get; }Property Value
Connected
获取一个值,该值指示 Client 的基础 Socket 是否已连接到远程主机。
public override bool Connected { get; }Property Value
IsClose
标识客户端是否关闭,改状态为调用关闭方法后的状态。
public override bool IsClose { get; }Property Value
IsReconnect
是否在与服务器断开后主动重连?
public bool IsReconnect { get; }Property Value
Keep
获取当前心跳信息
public KeepAlive Keep { get; }Property Value
LocalPoint
当前设备的连接信息
public override Ipv4Port LocalPoint { get; }Property Value
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
AddKeepAlive(byte)
添加持久化消息(心跳),防止特殊情况下的断开连接
public void AddKeepAlive(byte TimeInterval)Parameters
TimeInterval byte
Close()
TCP关闭
public override void Close()ConnectAsync(int)
异步连接,连接ip地址为127.0.0.1
public Task ConnectAsync(int port)Parameters
port int
要连接服务端的端口
Returns
ConnectAsync(string, int)
异步连接
public override Task ConnectAsync(string ip, int port)Parameters
ip string
要连接的服务器的ip地址
port int
要连接的服务器的端口
Returns
ConnectAsync(Ipv4Port)
异步连接
public Task ConnectAsync(Ipv4Port ipv4Port)Parameters
ipv4Port Ipv4Port
要连接的服务器的ip地址端口
Returns
CreateSendBytes(int)
创建数据发送空间
public override SendBytes<Socket> CreateSendBytes(int length = 0)Parameters
length int
数据大小
Returns
Exceptions
连接已中断
Dispose()
关闭连接,回收相关资源
public override void Dispose()OnComplete(in UserKey, EnClient)
可供开发重写的事件方法
public override ValueTask<IGetQueOnEnum> OnComplete(in UserKey IpPort, EnClient enAction)Parameters
IpPort UserKey
IP:端口
enAction EnClient
消息类型
Returns
Reconnection()
重连,返回是否重连,如果没有断开是不会重连的
public override Task<bool> Reconnection()Returns
SendAsync(string)
异步发送消息
public ValueTask SendAsync(string msg)Parameters
msg string
文本数据
Returns
SendAsync(ArraySegment<byte>)
异步发送消息
public ValueTask SendAsync(ArraySegment<byte> listData)Parameters
listData ArraySegment<byte>
数据包
Returns
SendAsync(SendBytes<Socket>)
异步发送消息
public override ValueTask SendAsync(SendBytes<Socket> sendBytes)Parameters
数据包
Returns
Exceptions
OnlyData验证失败
SetCompleted(CompletedEvent<EnClient>)
连接、发送、关闭事件
public override void SetCompleted(CompletedEvent<EnClient> Completed)Parameters
Completed CompletedEvent<EnClient>
SetReceived(ReceiveEvent<Socket>)
接收到数据事件
public override void SetReceived(ReceiveEvent<Socket> Received)Parameters
Received ReceiveEvent<Socket>