开源c#套接字(TCP + UDP)库

本文关键字:UDP TCP 套接字 开源 | 更新日期: 2023-09-27 17:54:53

我对。net框架的标准套接字类感到头疼。

有没有人推荐一个高效的开源c#套接字(TCP + UDP)库来处理套接字消息?

开源c#套接字(TCP + UDP)库

使用Kerry Jiang的SuperSocket库或Akka。净

  1. SuperSocket nuget包下载量超过10万次;注意2.0+是针对。net Core的,而1.6是针对。net Framework 4.8及以下版本的
  2. SuperSocket.ClientEngine。Core下载量超过70万
  3. Akka(用于。net)有超过120万的下载量,并有一个特殊的Akka.NET.Test
      从某种意义上说,这是作弊,因为它将使用套接字的决定推迟到最后一刻
  4. "Akka"最初是一个Java/Scala项目,后来变成了。net 因此,你应该谷歌搜索"Akka"。. NET"而不是"Akka"一般来说,你可能想用一些反压解决方案来构建你的网络IO,这可以在c# 8中使用Akka异步流来实现。
  5. RSocket是由前netflix工程师Robert Roeser建立的一个新库。
    • 与Akka Streams类似,提供了一种处理背压的方法。
在使用消息队列库而不是套接字库方面:
  1. EasyNetQ nuget包的下载量超过4百万次
  2. NetMQ内核包下载超过60万次
  3. ZeroMQ内核包有超过80k的下载量
    • 我在一个现实世界的项目中使用过这个,它工作得很好,但它是一个围绕C dll的绑定包装器

NetMQ非常适合简单的套接字通信。它处理消息的重建和许多杂乱的细节。它用于消息传递系统中的消息通信,但它也适用于简单的套接字。看一下请求-响应。套接字是一个经常导致框架叠加框架的领域,无论如何,让NetMQ来处理这些细节。

看看。net中包含的WCF。

我制作了一个基于c# WCF/TCP套接字服务器/客户端的控制台/win应用程序示例

https://github.com/evaldsurtans/wcf-sample-server-client

. net框架已经是一个处理tcp和udp的库。它大大简化了基本winsock api的过程。所以你想要一个在图书馆上面的图书馆?也许你会想要在此基础上再建一个库?还有一个在上面吗?

我的观点是,你可能找不到比。net框架提供的更简单的东西了。套接字是一个复杂的主题,需要您自己提供大量的实现。

库通常用于实现一些已经建立的协议(如SMTP或FTP),或者甚至可能为您提供更多工具来创建自己的协议。