C#:带SocketAsyncEventArgs的SSL?

C#:带SocketAsyncEventArgs的SSL?,c#,ssl,client-server,C#,Ssl,Client Server,我正在使用C#.NET开发一个套接字服务器。我使用的是SocketAsyncEventArgs类提供的异步模型,因为它必须是高性能服务器,才能在短时间内支持许多连接。接下来,我想确保 客户端和服务器,我想我可以使用SSL 有没有办法在SocketAsyncEventArgs模型中使用SSL?我知道.NET有用于SSL安全的SslStream类,但我需要使用SocketAsyncEventArgs来实现高性能 是否可以在上层使用SSL,而不在服务器代码中实现它 提前感谢。您可以使用SSL/TLS协

我正在使用C#.NET开发一个套接字服务器。我使用的是SocketAsyncEventArgs类提供的异步模型,因为它必须是高性能服务器,才能在短时间内支持许多连接。接下来,我想确保 客户端和服务器,我想我可以使用SSL

有没有办法在SocketAsyncEventArgs模型中使用SSL?我知道.NET有用于SSL安全的SslStream类,但我需要使用SocketAsyncEventArgs来实现高性能

是否可以在上层使用SSL,而不在服务器代码中实现它


提前感谢。

您可以使用SSL/TLS协议的第三方实现,例如我们的,并将其用于任何传输,包括异步模式下的.NET套接字。SecureBackbox的SSL服务器组件没有自己的套接字,而是触发事件,您可以在事件处理程序中编写与套接字相关的代码。通过这种方式,您可以插入任何传输,即使是非插座传输。

我想我可能已经找到了一个提供此功能的项目

我仍然在玩它,并且在加载服务器证书时遇到了一个问题,但是,通过查看源代码,它看起来很有希望

我不确定的一个方面是,它p/调用secur32.dll,而不是一个纯粹的c#实现,因此我不确定这对内存/性能有什么影响


sourceforge项目页面上关于项目目标的详细信息很少。

不确定是否还有人关心这个项目,因为这个项目太旧了,但我本周只需要这么做,在互联网上找不到任何满足我需要的东西。也许在这个框架中有一些新的东西我找不到。。。不管怎样,我会发布源代码,但因为我是为我的公司写的,他们往往对此表示不满,所以我只概述一下我采取的方法:

由于SslStream在构造函数中接受一个流,因此我实现了自己的流子类型,其中一个底层MemoryStream用于读取,另一个用于写入。我还将TcpClient传递给这个对象

我使用TcpClient进行握手以设置SSL连接。根据使用方式对服务器或客户端进行身份验证后,我将使用两个MemoryStream进行SslStream读/写

因此,对于异步写入,我首先将有效负载写入SslStream,该SslStream填充MemoryStream,以便使用加密数据进行写入。使用来自MemoryStream的加密数据,我填充SocketAsyncEventArgs缓冲区并调用TcpClient SendAsync方法。对于阅读来说,情况恰恰相反


我不能说这样移动数据会让我特别兴奋,但只要你不让你的MemoryBuffer对象不断地被重新分配,这就不是性能问题。至少这样,我可以只使用框架和我自己的代码,而不依赖第三方软件。

John,你有更多关于这方面的信息吗?