Skip to content

Class ServerFrame

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

封装的一个TCP框架(服务端)

csharp
public class ServerFrame : EnServerEventDrive

Inheritance

objectEnServerEventDriveServerFrame

Inherited Members

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

ServerFrame()

无参构造

csharp
public ServerFrame()

ServerFrame(NetBufferSize)

初始化包

csharp
public ServerFrame(NetBufferSize bufferSize)

Parameters

bufferSize NetBufferSize

收包规范

Properties

IsAllowRelay

表示服务器是否接受转发消息(默认接受)

csharp
public bool IsAllowRelay { get; init; }

Property Value

bool

IsClose

标识服务端连接是否关闭

csharp
public bool IsClose { get; }

Property Value

bool

IsThreadPool

是否使用线程池调度接收后的数据(允许使用者初始化时设置,消息是否有序获取) 默认 true 开启

csharp
public bool IsThreadPool { get; init; }

Property Value

bool

ListClient

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

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

Property Value

IReadOnlyDictionary<UserKey, Socket>

Server

服务器创建时的信息

csharp
public UserKey Server { get; }

Property Value

UserKey

Methods

ClientClose(Ipv4Port)

关闭存在的连接用户

csharp
public bool ClientClose(Ipv4Port ipv4)

Parameters

ipv4 Ipv4Port

IpV4

Returns

bool

成功/失败

Close()

关闭服务器并断开所有连接的客户端

csharp
public void Close()

Send(in Ipv4Port, ApiPacket)

同步发送消息

csharp
public NetResponse Send(in Ipv4Port key, ApiPacket api)

Parameters

key Ipv4Port

发送人的IP

api ApiPacket

接口调用信息

Returns

NetResponse

SendAsync(Ipv4Port, ApiPacket)

异步发送消息

csharp
public ValueTask<NetResponse> SendAsync(Ipv4Port key, ApiPacket api)

Parameters

key Ipv4Port

发送人的IP

api ApiPacket

接口调用信息

Returns

ValueTask<NetResponse>

SetCompleted(CompletedEvent<EnServer>)

连接、发送、关闭事件

csharp
public void SetCompleted(CompletedEvent<EnServer> Completed)

Parameters

Completed CompletedEvent<EnServer>

SetIpParser(IpParserEvent)

实现IP:Port解释器 (返回有效的IP:Port,返回空使用原值) 参数1:发起方信息空表示无发起方,参数2:接收方信息

csharp
public void SetIpParser(IpParserEvent IpParser)

Parameters

IpParser IpParserEvent

StartAsync(int)

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

csharp
public Task StartAsync(int port)

Parameters

port int

Returns

Task

StartAsync(string, int)

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

csharp
public Task StartAsync(string ip, int port)

Parameters

ip string

port int

Returns

Task

基于Apache-2.0协议开源