SAEA.Socket高性能 sockets 網(wǎng)絡(luò)框架
SAEA.Socket 是一個(gè) IOCP 高性能 sockets 網(wǎng)絡(luò)框架,基于 dotnet standard 2.0;Src 中含有其使用場(chǎng)景,例如大文件傳輸、websocket client and server、高性能消息隊(duì)列、rpc、redis 驅(qū)動(dòng)、httpserver、MQTT、Mvc、DNS、消息服務(wù)器等。
- [√] IOCP
- [√] FileTransfer
- [√] FTP
- [√] MessageSocket
- [√] QueueSocket
- [√] MVC
- [√] RPC
- [√] Websocket
- [√] RedisDrive
- [√] MQTT
- [√] DNS
引用組件
引用組件,可以在 nuget 中搜索 saea,或者直接輸入命令
Install-Package SAEA.Sockets -Version 6.0.0.2
例子
用于自定義協(xié)議的 SAEA.Sockets
JT808協(xié)議
測(cè)試項(xiàng)目為SAEA.SocketsTest,其中演示了使用三方協(xié)議(JT808)來(lái)如何擴(kuò)展 IContext、IUnpacker 解碼、編碼的方式接入 SAEA.Sockets
FileTransfer
saea.filesocket 用法
var fileTransfer = new FileTransfer(filePath); fileTransfer.OnReceiveEnd += _fileTransfer_OnReceiveEnd; fileTransfer.OnDisplay += _fileTransfer_OnDisplay; fileTransfer.Start(); //send file fileTransfer.SendFile(string fileName, string ip)
FTP
saea.ftp 用法
saea.ftpclient
var client = new FTPClient(ip, port, username, pwd); client.Ondisconnected += _client_Ondisconnected; client.Connect(); var path = client.CurrentDir(); client.Upload(filePath, (o, c) => { size = c; _loadingUserControl.Message = $"正在上傳文件:{fileName},{(o * 100 / c)}%"; }); client.Download(fileName, Path.Combine(filePath, fileName), (o, c) => { _loadingUserControl.Message = $"正在下載文件:{fileName},{(o * 100 / c)}%"; });
saea.ftpserver
_serverConfig.IP = ip; _serverConfig.Port = port; FTPServerConfigManager.Save(); var ftpServer = new FTPServer(_serverConfig.IP, _serverConfig.Port, _serverConfig.BufferSize); ftpServer.OnLog += _ftpServer_OnLog; ftpServer.Start();
QueueTest
saea.queue 服務(wù)器使用
var server = new QServer(); server.Start();
saea.queue producer 用法
var ipPort = "127.0.0.1:39654"; QClient producer = new QClient("productor_" + Guid.NewGuid().ToString("N"), ipPort); producer.OnError += Producer_OnError; producer.OnDisconnected += Client_OnDisconnected; producer.Connect(); producer.Publish(topic, msg);
saea.queue consumer 使用
var ipPort = "127.0.0.1:39654"; QClient consumer = new QClient("subscriber_" + Guid.NewGuid().ToString("N"), ipPort); consumer.OnMessage += Subscriber_OnMessage; consumer.OnDisconnected += Client_OnDisconnected; consumer.Connect(); consumer.Subscribe(topic);
評(píng)論
圖片
表情
