
Nuget: xiaofeng.net
| Número de grupo QQ | Grupo QQ | Cuenta oficial |
|---|---|---|
| 748408911 | ![]() | ![]() |
Código fuente: https://github.com/zhuovi/xiaofeng.net
Tutorial: https://www.yuque.com/fayelf/xiaofeng
La biblioteca de la red XiaOfeng encapsula el cliente y el servidor Socket, y puede implementar fácilmente suscripción, publicación y otras funciones basadas en la biblioteca actual.
Xiaofeng.net Generator con xiaofeng.net.
.NET CLI
$ dotnet add package XiaoFeng.Net --version 3.1.5
Administrador de paquetes
PM> Install-Package XiaoFeng.Net --Version 3.1.5
Paquete de paquete
<PackageReference Include="XiaoFeng.Net" Version="3.1.5" />
Paket cli
> paket add XiaoFeng.Net --version 3.1.5
Guión e interactivo
> #r "nuget: XiaoFeng.Net, 3.1.5"
Pastel
// Install XiaoFeng.Net as a Cake Addin
#addin nuget:?package=XiaoFeng.Net&version=3.1.5
// Install XiaoFeng.Net as a Cake Tool
#tool nuget:?package=XiaoFeng.Net&version=3.1.5
1. Corrige el error cuando SocketClient está conectado a DNS;
1. Optimizar el juicio del valor mínimo y máximo de NetworkDelay en SocketClient;
2. Optimice el error en SocketClient donde el host está conectado a IP;
3. Optimizar xiaofeng.net.WebSocketClient Header;
4. Optimizar el cliente de red;
1. Optimice los errores que ocasionalmente rechazan las conexiones cuando el servidor recibe clientes WebSocket cuando se usa el tiempo de retraso de la red.
2.SocketServer y Socketclient Agregar atributo de retraso de red NetworkDelay;
3. Optimizar el método aceptado de actitcpClient en SocketServer;
1. Optimizar SocketClient, errores que no se desempaquetan en el cliente WebSocket;
2. Optimice el error donde el SocketClient solo se llama en el evento OnMessage, pero no en el evento OnMessageByte para la primera conexión;
3.SocketClient aumenta el último tiempo de comunicación de LastMessageTime y el tiempo de conexión ConnectedTime;
4. Optimizar la identificación de si el cliente es WebSocket o Socket;
5. El método de conexión de SocketClient agrega el tipo de retorno;
1. Se solucionó el problema de que el servidor no puede recibir el mensaje cuando Postman envía constantemente mensajes bajo SSL;
1. Agregue la propiedad WebSocketRequest en WebSocketClient a la información de solicitud del cliente;
2. WebSocketClient agrega los datos de transferencia de inicio WebSocketRequestOptions;
3. Optimizar anotaciones de biblioteca de red de socket;
4. Se corrigió el error donde SocketServer envía una nueva devolución de llamada de conexión cada vez que recibe un mensaje;
1. Reescribe la biblioteca de socket, SocketServer, WebSocketServer, SocketClient, WebSocketClient;
| Espacio de nombres | Biblioteca de clases | Estado de código abierto | ilustrar | Incluye funciones |
|---|---|---|---|---|
| Xiaofeng.prototipo | Xiaofeng.core | Biblioteca extendida | ToCase Tipo Conversión Totimestamp, Totimestamps es hora de la marca de tiempo GetBasepath obtiene la ruta absoluta del archivo, admite Linux y Windows GetFileName obtiene el nombre del archivo GetMatch, GetMatches, GetMatchs, IsMatch, ReplacePatten, Operación de expresión regular de eliminación de Pattern | |
| Xiaofeng.net | Xiaofeng.net | Biblioteca de red | La biblioteca de la red XiaOfeng encapsula el cliente y el servidor Socket (Socket, WebSocket), y puede implementar fácilmente suscripción, publicación y otras funciones basadas en la biblioteca actual. | |
| Xiaofeng.http | Xiaofeng.core | Biblioteca de solicitudes de simulación | Simular solicitudes de red | |
| Xiaofeng.data | Xiaofeng.core | Biblioteca de operaciones de la base de datos | Admite docenas de bases de datos como SQLServer, MySQL, Oracle, Dameng, SQLite, Access, OLEDB, ODBC, etc. | |
| Xiaofeng.cache | Xiaofeng.core | Biblioteca de caché | Cache de memoria, Redis, MemCachedCache, MemoryCache, Filecache Cache | |
| Xiaofeng.config | Xiaofeng.core | Biblioteca de archivos de configuración | Genere automáticamente archivos de configuración creando modelos, que pueden estar en formato de archivo XML, JSON, INI | |
| Xiaofeng.cryptografía | Xiaofeng.core | Biblioteca de algoritmo de cifrado | AES, DES, RSA, MD5, DES3, SHA, HMAC, RC4 Algoritmo de cifrado | |
| Xiaofeng.excel | Xiaofeng.excel | Biblioteca de operación de Excel | Operaciones de Excel, Crear Excel, Editar Excel, Leer contenido de Excel, Bordes, fuentes, estilos y otras funciones | |
| Xiaofeng.ftp | Xiaofeng.ftp | Biblioteca de solicitudes FTP | Cliente FTP | |
| Xiaofeng.io | Xiaofeng.core | Biblioteca de operación de archivo | Operaciones de lectura y escritura de archivos | |
| Xiaofeng.json | Xiaofeng.core | Serialización JSON, Biblioteca de deserialización | Serialización JSON, Biblioteca de deserialización | |
| Xiaofeng.xml | Xiaofeng.core | Serialización XML, biblioteca de deserialización | Serialización XML, biblioteca de deserialización | |
| Xiaofeng.log | Xiaofeng.core | Biblioteca de registro | Escribir archivos de registro, bases de datos | |
| Xiaofeng.memcached | Xiaofeng.memcached | Biblioteca de caché memcached | Memcached Middleware admite .NET Framework, .NET Kernel y .NET Standard Library, una herramienta de cliente muy conveniente. Implemente las funciones de Set, Agregar, Reemplazar, Preparar, Agregar, CAS, Get, Gets, GAT, GATS, Eliminar, Tocar, Estadísticas, estadísticas Elementos, las losas de estadísticas, tamaños de estadísticas, Flush_all, Incremento, disminución y agrupación de subprocesos. | |
| Xiaofeng.redis | Xiaofeng.redis | Biblioteca Redis Cache | Redis Middleware es compatible con .NET Framework, .NET Kernel y .NET Standard Library, una herramienta de cliente muy conveniente. Implementa las funciones de hash, clave, cadena, zset, transmisión, registro, lista, suscripción y publicación, y agrupación de hilos; | |
| Xiaofeng.threading | Xiaofeng.core | Biblioteca | Tareas de hilo, colas de subprocesos | |
| Xiaofeng.mvc | Xiaofeng.mvc | Marco de desarrollo web de bajo código | .NET Core Basic Class, desarrollo rápido de CMS Framework, plataforma de código bajo real, permisos de roles propios, plataforma WebAPI, administración de fondo, comandos de ejecución del servicio hostable: aplicaciones. Instalar el nombre del servicio Descripción del servicio, comando y eliminar la parada de inicio de inicio de inicio. | |
| Xiaofeng.proxy | Xiaofeng.proxy | Biblioteca de agentes | En desarrollo | |
| Xiaofeng.tdengine | Xiaofeng.tdengine | TDENGINE CLIENTE | En desarrollo | |
| Xiaofeng.gb28181 | Xiaofeng.gb28181 | Biblioteca de videovigilancia, biblioteca SIP, protocolo GB28181 | En desarrollo | |
| Xiaofeng.onvif | Xiaofeng.onvif | Biblioteca de video vigilancia ONVIF Protocolo | Xiaofeng.onvif usa C# para encapsular las interfaces, dispositivos, medios, gimbals y otras funciones de ONVIF basadas en la plataforma .NET. Rechaza el servicio WCF para referencia a proxy dinámico para generar archivos tipo WSDL, y utiliza un lenguaje de marcado de extensión XML nativo para encapsular los parámetros. Todos los flujos de datos son controlables. |
//新建一个服务端,同时支持websocket,socket客户端连接
var server = new NetServer < ServerSession > ( 8088 )
{
//是否启用ping
IsPing = true ,
//是否启用新行
IsNewLine = true ,
//传输编码
Encoding = System . Text . Encoding . UTF8 ,
//认证 认证不过则直接断开
SocketAuth = s =>
{
//判断 客户端是否符合认证,不符合则直接返回false即可
return true ;
}
} ;
server . OnStart += ( s , e ) =>
{
//服务端启动事件
Console . WriteLine ( $ "启动!- { DateTime . Now : yyyy-MM-dd HH:mm:ss.fffffff } " ) ;
} ;
server . OnNewConnection += ( s , e ) =>
{
//客户端新连接事件
Console . WriteLine ( $ "新连接- { DateTime . Now : yyyy-MM-dd HH:mm:ss.fffffff } " ) ;
//给当前客户端设置一个频道名 为后边按频道名发送作准备
//一个客户端可以订阅多个频道
//websocket可以从头里面获取标识
//如果非websocket 可以从消息里设置频道消息
if ( s . Headers . IndexOf ( "Channel:a" ) > 0 )
s . AddChannel ( "a" ) ;
else
s . AddChannel ( "b" ) ;
} ;
server . OnDisconnected += ( s , e ) =>
{
//客户端断开连接事件
Console . WriteLine ( $ "断开连接!- { DateTime . Now : yyyy-MM-dd HH:mm:ss.fffffff } " ) ;
} ;
server . OnMessage += ( s , m , e ) =>
{
//接收消息事件
if ( m . IndexOf ( "Channel:a" ) > 0 )
{
s . AddChannel ( "a" ) ;
return ;
}
else if ( m . IndexOf ( "Channel:b" ) > 0 )
{
s . AddChannel ( "b" ) ;
return ;
}
Console . WriteLine ( $ "消息- { m } - { DateTime . Now : yyyy-MM-dd HH:mm:ss.fffffff } " ) ;
//把当前消息发送到频道名为a的所有客户端
server . Send ( "a" , Encoding . UTF8 . GetBytes ( "消息" ) ) ;
//回复当前客户端消息
s . Send ( "消息" ) ;
//发送消息给所有客户端
server . Send ( "消息" ) ;
} ;
server . OnMessageByte += ( session , message , e ) =>
{
//接收消息事件
session . Send ( "回复客户端消息" ) ;
} ;
server . OnError += ( s , e ) =>
{
//服务端出错事件
Console . WriteLine ( $ "出错- { e . Message } - { DateTime . Now : yyyy-MM-dd HH:mm:ss.fffffff } " ) ;
} ;
server . OnClientError += ( session , e ) =>
{
//客户端出错事件
} ;
server . OnError += ( session , e ) =>
{
//服务端出错事件
} ;
server . OnStop += ( socket , e ) =>
{
//服务端停止事件
} ;
server . Start ( ) ;
//添加黑名单
server . AddIpBlack ( "10.10.10.10" ) ;
//移除黑名单
server . RemoveIpBlack ( "10.10.10.10" ) ;
//清空黑名单
server . ClearIpBlack ( ) ;
//断开所有客户端
server . ClearQueue ( ) ;
//在线客户端列表 复制出来的
var clients = server . GetData ( ) ;
//在线客户端列表 原列表
var clients1 = server . ConnectionSocketList ; var client = new XiaoFeng . Net . NetClient < XiaoFeng . Net . ClientSession > ( "127.0.0.1" , 8888 ) ;
client . OnStart += ( socket , e ) =>
{
//启动消息
} ;
client . OnClose += ( socket , e ) =>
{
//关闭消息
} ;
client . OnDisconnected += ( session , e ) => {
//断开连接消息
} ;
client . OnError += ( socket , e ) =>
{
//出错消息
} ;
client . OnMessageByte += ( session , message , e ) =>
{
//接收信息
} ;
//启动客户端
client . Start ( ) ;
client . Send ( "发送消息" ) ;
client . Subscribe ( "订阅频道" ) ;
client . UnSubscribe ( "取消订阅频道" ) ;