
Nuget: Xiaofeng.net
| QQ رقم المجموعة | QQ مجموعة | حساب رسمي |
|---|---|---|
| 748408911 | ![]() | ![]() |
رمز المصدر: https://github.com/zhuovi/xiaofeng.net
البرنامج التعليمي: https://www.yuque.com/fayelf/xiaofeng
تقوم مكتبة شبكة Xiaofeng بتغليف عميل وخادم المقبس ، ويمكنها بسهولة تنفيذ الاشتراك والنشر والوظائف الأخرى بناءً على المكتبة الحالية.
مولد Xiaofeng.net مع 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" />
باكيت كلي
> 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. إصلاح الخلل عند توصيل SocketClient بـ DNS ؛
1. تحسين حكم الحد الأدنى والحد الأقصى لقيمة الشبكة في SocketClient ؛
2. قم بتحسين الخلل في SocketClient حيث يتم توصيل المضيف بـ IP ؛
3.
4. تحسين عميل الشبكة ؛
1. تحسين الأخطاء التي ترفض الاتصالات أحيانًا عندما يتلقى الخادم عملاء WebSocket عند استخدام وقت تأخير الشبكة.
2.SocketServer و SocketClient إضافة سمة تأخير شبكة NetworkDelay ؛
3. تحسين طريقة قبول TrcpClient في SocketServer ؛
1. تحسين SocketClient ، الأخطاء التي لا يتم تفريغها على عميل WebSocket ؛
2. قم بتحسين الخطأ حيث يتم استدعاء SocketClient فقط في حدث OnMessage ولكن ليس حدث OnMessagebyte للاتصال الأول ؛
3.SocketClient يزيد من آخر وقت اتصال من LastMessageTime ووقت اتصال ConnectTime ؛
4. تحسين تحديد ما إذا كان العميل WebSocket أو Socket ؛
5.SocketClient طريقة الاتصال تضيف نوع الإرجاع ؛
1. إصلاح المشكلة التي لا يمكن للخادم تلقيها للرسالة عندما يقوم ساعي البريد بإرسال الرسائل باستمرار ضمن SSL ؛
1. إضافة خاصية WebSocketRequest في WebSocketClient إلى معلومات طلب العميل ؛
2. WebSocketClient يضيف بيانات START TRANSFERSERSERQUESTOPTIONS ؛
3. تحسين تعليقات مكتبة شبكة المقبس ؛
4. إصلاح الخطأ حيث يرسل SocketServer رد اتصال جديد في كل مرة يتلقى رسالة ؛
1. أعد كتابة مكتبة المقبس ، SocketServer ، WebSocketServer ، SocketClient ، WebSocketClient ؛
| مساحة الاسم | مكتبة الفصل | حالة المصدر المفتوح | يوضح | يشمل وظائف |
|---|---|---|---|---|
| Xiaofeng.Prototype | Xiaofeng.core | مكتبة ممتدة | تحويل نوع التحويل TOTIMESTAMP ، TOTIMESTAMPS الوقت إلى الطابع الزمني يحصل GetBasePath على المسار المطلق للملف ، ويدعم Linux و Windows GetFilename يحصل على اسم الملف getMatch ، getMatches ، getMatchs ، isMatch ، replacepatten ، عملية التعبير العادية removePattern | |
| Xiaofeng.net | Xiaofeng.net | مكتبة الشبكة | تقوم مكتبة شبكة Xiaofeng بتغليف عميل وخادم Socket (Socket ، WebSocket) ، ويمكنها بسهولة تنفيذ الاشتراك والنشر والوظائف الأخرى بناءً على المكتبة الحالية. | |
| Xiaofeng.http | Xiaofeng.core | مكتبة طلب المحاكاة | محاكاة طلبات الشبكة | |
| Xiaofeng.Data | Xiaofeng.core | مكتبة تشغيل قاعدة البيانات | دعم العشرات من قواعد البيانات مثل SQLServer ، MySQL ، Oracle ، Dameng ، SQLite ، Access ، OLEDB ، ODBC ، إلخ. | |
| Xiaofeng.cache | Xiaofeng.core | مكتبة ذاكرة التخزين المؤقت | ذاكرة التخزين المؤقت للذاكرة ، redis ، memcachedcache ، memorycache ، filecache cache | |
| xiaofeng.config | Xiaofeng.core | مكتبة ملف التكوين | قم بإنشاء ملفات التكوين تلقائيًا عن طريق إنشاء نماذج ، والتي يمكن أن تكون في تنسيق ملف XML و JSON و INI | |
| Xiaofeng.cryptography | Xiaofeng.core | مكتبة خوارزمية التشفير | AES ، DES ، RSA ، MD5 ، DES3 ، SHA ، HMAC ، RC4 ENCRYPTION | |
| Xiaofeng.excel | Xiaofeng.excel | مكتبة عملية Excel | عمليات Excel ، إنشاء 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 kernel و .NET Standard Library ، وهي أداة عميل مريحة للغاية. قم بتنفيذ وظائف SET ، وإضافة ، واستبدالها ، و prepend ، و cas ، و get ، gat ، gats ، الحذف ، اللمس ، الإحصائيات ، عناصر الإحصائيات ، ألواح الإحصائيات ، أحجام الإحصائيات ، flush_all ، الزيادة ، الانخفاض ، وتجميع مؤشرات الترابط. | |
| xiaofeng.redis | xiaofeng.redis | Redis Cache Library | يدعم Redis Middleware .NET Framework و .net kernel و .NET Standard Library ، وهي أداة عميل مريحة للغاية. ينفذ وظائف التجزئة ، المفتاح ، السلسلة ، Zset ، دفق ، سجل ، قائمة ، اشتراك ونشر ، وتجميع مؤشرات الترابط ؛ | |
| Xiaofeng.Threading | Xiaofeng.core | مكتبة الموضوع | مهام الموضوع ، قوائم قوائم الخيوط | |
| xiaofeng.mvc | xiaofeng.mvc | إطار تطوير الويب منخفض الرمز | .NET Core Basic Class ، التطوير السريع لـ CMS Framework ، منصة حقيقية منخفضة الرمز ، أذونات الأدوار الخاصة ، منصة WebAPI ، إدارة الخلفية ، أوامر تشغيل الخدمة القابلة للاستضافة: Application.exe تثبيت اسم الخدمة الوصف ، والأمر ، وحذف Start Start Stop. | |
| xiaofeng.proxy | xiaofeng.proxy | مكتبة الوكيل | قيد التنمية | |
| Xiaofeng.tdengine | Xiaofeng.tdengine | عميل tdengine | قيد التنمية | |
| xiaofeng.gb28181 | xiaofeng.gb28181 | مكتبة مراقبة الفيديو ، مكتبة SIP ، بروتوكول GB28181 | قيد التنمية | |
| xiaofeng.onvif | xiaofeng.onvif | بروتوكول مكتبة مراقبة الفيديو | يستخدم Xiaofeng.onvif C# لتغليف واجهات وأجهزة ووسائط ووسائط ووسائط ووسائط ووظائف أخرى استنادًا إلى منصة .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 ( "取消订阅频道" ) ;