SAEA.Socket 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
SAEA.Socket 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
SAEA.Socket 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache-2.0
开发语言 C# 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 Alias_Travis
适用人群 未知
收录时间 2021-10-20

软件简介

SAEA.Socket 是一个 IOCP 高性能 sockets 网络框架,基于 dotnet standard 2.0;Src 中含有其使用场景,例如大文件传输、websocket client and server、高性能消息队列、rpc、redis 驱动、httpserver、MQTT、Mvc、DNS、消息服务器等。

  • [√] IOCP
  • [√] FileTransfer
  • [√] FTP
  • [√] MessageSocket
  • [√] QueueSocket
  • [√] MVC
  • [√] RPC
  • [√] Websocket
  • [√] RedisDrive
  • [√] MQTT
  • [√] DNS

引用组件

引用组件,可以在 nuget 中搜索 saea,或者直接输入命令

Install-Package SAEA.Sockets -Version 6.0.0.2

例子

用于自定义协议的 SAEA.Sockets

JT808协议

测试项目为SAEA.SocketsTest,其中演示了使用三方协议(JT808)来如何扩展 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 服务器使用

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);

 

 

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部