
Nuget: xiaofeng.net
| Номер группы QQ | QQ Group | Официальный счет |
|---|---|---|
| 748408911 | ![]() | ![]() |
Исходный код: https://github.com/zhuovi/xiaofeng.net
Учебное пособие: https://www.yuque.com/fayelf/xiaofeng
Сетевая библиотека Xiaofeng инкапсулирует клиент и сервер сокета и может легко реализовать подписку, публикацию и другие функции на основе текущей библиотеки.
Xiaofeng.net Generator с xiaofeng.net.
.NET CLI
$ dotnet add package XiaoFeng.Net --version 3.1.5
Менеджер пакетов
PM> Install-Package XiaoFeng.Net --Version 3.1.5
Packagereference
<PackageReference Include="XiaoFeng.Net" Version="3.1.5" />
Пакет CLI
> paket add XiaoFeng.Net --version 3.1.5
Скрипт и интерактивный
> #r "nuget: XiaoFeng.Net, 3.1.5"
Торт
// 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. Исправьте ошибку, когда сокетско -клиент подключен к DNS;
1. Оптимизировать суждение минимального и максимального значения NetworkDelay в SocketClient;
2. Оптимизировать ошибку в SocketClient, где хост подключен к IP;
3. Оптимизировать xiaofeng.net.websocketClient Заголовок запроса;
4. Оптимизировать сетевой клиент;
1. Оптимизируйте ошибки, которые иногда отказываются от соединений, когда сервер получает клиентов WebSocket, когда используется время задержки сети.
2.SocketServer и SocketClient Добавить атрибут задержки сети NetworkDelay;
3. Оптимизировать метод AcceptCpClient в SocketServer;
1. Оптимизируйте SocketClient, ошибки, которые не распаковываются на клиенте WebSocket;
2. Оптимизируйте ошибку, в которой сокетскоклиент вызывается только на событии OnMessage, но не на событии OnMessageByte для первого подключения;
3. Сочетный клиент увеличивает последнее время связи в течение последнего времени и времени подключено время подключения;
4. Оптимизировать идентификацию того, является ли клиент WebSocket или Socket;
5. Метод подключения к ColectClient добавляет тип возврата;
1. Исправлена проблема, что сервер не может получить сообщение, когда почтальон постоянно отправляет сообщения в SSL;
1. Добавить свойство websocketRequest в WebSocketClient в информацию о запросе клиента;
2. WebSocketClient добавляет начало передачи данных WebSocketRequestoptions;
3. Оптимизировать аннотации библиотеки сетевой библиотеки сокета;
4. Исправлена ошибка, где SocketServer отправляет новый обратный вызов подключению каждый раз, когда он получает сообщение;
1. Перепишите библиотеку сокетов, SocketServer, WebSocketServer, SocketClient, WebSocketClient;
| Пространство имен | Класс библиотека | Статус открытого исходного кода | иллюстрировать | Включает функции |
|---|---|---|---|---|
| Xiaofeng.protototype | Xiaofeng.core | Расширенная библиотека | Преобразование типа тока Totimestam GetBasePath получает абсолютный путь файла, поддерживает Linux и Windows GetFilEname Получает имя файла GetMatch, GetMatches, GetMatchs, Ismatch, Replacepatten, RemovePattern Rigtion Operation | |
| Xiaofeng.net | Xiaofeng.net | Сетевая библиотека | Сетевая библиотека Xioofeng инкапсулирует клиент и сервер сокета (Socket, Websocket) и может легко реализовать подписку, публикацию и другие функции на основе текущей библиотеки. | |
| Xiaofeng.http | Xiaofeng.core | Библиотека запросов на моделирование | Моделировать сетевые запросы | |
| Xiaofeng.data | Xiaofeng.core | Библиотека работы базы данных | Поддержите десятки баз данных, таких как SQLServer, MySQL, Oracle, Dameng, SQLite, Access, OLEDB, ODBC и т. Д. | |
| Xiaofeng.cache | Xiaofeng.core | Библиотека кеша | Кэш памяти, Redis, Memcachedcache, MemoreCache, Filecache Cache | |
| Xiaofeng.config | Xiaofeng.core | Библиотека файлов конфигурации | Автоматически генерировать файлы конфигурации путем создания моделей, которые могут быть в формате XML, JSON, INI. | |
| Xiaofeng.cryptography | Xiaofeng.core | Библиотека алгоритма шифрования | AES, DES, RSA, MD5, DES3, SHA, HMAC, RC4 Алгоритм шифрования | |
| Xiaofeng.excel | Xiaofeng.excel | Excel Operation Library | Excel Operations, создайте Excel, редактируйте Excel, прочитайте контент Excel, границы, шрифты, стили и другие функции | |
| Xiaofeng.ftp | Xiaofeng.ftp | FTP -запросы библиотека | FTP клиент | |
| Xiaofeng.io | Xiaofeng.core | Библиотека работы файлов | Операции чтения и записи файла | |
| Xiaofeng.json | Xiaofeng.core | Json serialization, библиотека пустыней | Json serialization, библиотека пустыней | |
| Xiaofeng.xml | Xiaofeng.core | Сериализация XML, библиотека пустыней | Сериализация XML, библиотека пустыней | |
| Xiaofeng.log | Xiaofeng.core | Библиотека журнала | Написать файлы журнала, базы данных | |
| Xiaofeng.memcached | Xiaofeng.memcached | Библиотека кеша MEMCACHED | Memcached Middleware поддерживает .NET Framework, .NET ядра и стандартная библиотека .NET, очень удобный клиент -инструмент. Реализуйте функции SET, добавить, заменить, придавать, добавлять, CAS, GET, GET, GAT, GAT, DELETE, TOCK, статистика, статистические элементы, статистические плиты, размеры статистики, flush_all, приращение, уменьшение и объединение потоков. | |
| Xiaofeng.redis | Xiaofeng.redis | Библиотека CACHE REDIS | Redis Middleware поддерживает .NET Framework, .NET ядра и стандартная библиотека .NET, очень удобный клиент -инструмент. Реализует функции хэша, ключа, строки, zset, потока, журнала, списка, подписки и публикации, а также объединения потоков; | |
| Xiaofeng.threading | Xiaofeng.core | Библиотека | Задачи потока, очереди потока | |
| Xiaofeng.mvc | Xiaofeng.mvc | Структура веб-разработки с низким кодом | .NET CORE BASIC CLASS, Быстрая разработка CMS Framework, реальная платформа с низким содержанием кодов, собственные разрешения роли, платформа WebAPI, управление фоном, хост-запуск службы: Application.exe Установка Служба Служба Описание, команда и удаление Start Start Stop Stop. | |
| Xiaofeng.proxy | Xiaofeng.proxy | Библиотека агентов | Под разработкой | |
| Xiaofeng.tdengine | Xiaofeng.tdengine | Клиент Tdengine | Под разработкой | |
| Xiaofeng.gb28181 | Xiaofeng.gb28181 | Библиотека наблюдения за видео, библиотека SIP, протокол GB28181 | Под разработкой | |
| Xiaofeng.onvif | Xiaofeng.onvif | Библиотека наблюдения за видео | Xiaofeng.onvif использует C# для инкапсуляции общепринятых интерфейсов Onvif, устройств, средств массовой информации, шарниров и других функций, основанных на платформе .NET. Он отказывается от службы WCF для ссылки на динамический прокси-сервер для генерации WSDL-подобных файлов и использует собственный язык разметки расширения XML для инкапсуляции параметров. Все потоки данных контролируются. |
//新建一个服务端,同时支持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 ( "取消订阅频道" ) ;