gpt4 book ai didi

C#:使用 SocketAsyncEventArgs 的 SSL?

转载 作者:太空狗 更新时间:2023-10-29 20:22:18 25 4
gpt4 key购买 nike

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

是否有任何方法可以将 SSL 与 SocketAsyncEventArgs 模型一起使用?我知道 .NET 具有用于 SSL 保护的 SslStream 类,但我需要使用 SocketAsyncEventArgs 以获得高性能。

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

提前致谢。

最佳答案

不确定是否有人再关心了,因为它太旧了,但我本周需要这样做,但在互联网上找不到满足我需求的任何东西。也许框架中有一些我找不到的新东西可以做到这一点……无论如何,我会发布源代码,但由于我是为我的公司编写的,他们往往对此不以为然,所以我将概述我的方法花了:

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

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

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

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

关于C#:使用 SocketAsyncEventArgs 的 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3881238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com