Joh*_*hnC 7 c# ssl client-server
我正在使用C#.NET开发套接字服务器.我正在使用SocketAsyncEventArgs类提供的异步模型,因为它必须是一个高性能服务器,以便在短时间内支持许多连接.接下来,我想保护客户端和服务器之间的通信,我想我可以使用SSL.
有没有办法在SocketAsyncEventArgs模型中使用SSL?我知道.NET有SSL保护的SslStream类,但我需要使用SocketAsyncEventArgs来获得高性能.
是否可以在较高级别使用SSL,而无需在服务器代码中实现它?
提前致谢.
小智 7
不知道是否有人关心,因为这已经太老了,但我本周需要做的就是在互联网上找不到满足我需求的东西.也许在框架中有一些新东西,我无法找到...无论如何,我会发布源代码,但因为我为我的公司写了它,他们往往不赞成,我只是勾勒出方法我拿:
由于SslStream在构造函数中获取流,因此我实现了自己的Stream子类型,其中底层MemoryStream用于读取,另一个用于写入.我也将TcpClient传递给了这个对象.
我使用TcpClient进行握手以设置SSL连接.根据我使用它的方式对服务器或客户端进行身份验证后,然后使用我的两个MemoryStreams进行SslStream读/写.
因此,对于Async写入,我首先将我的有效负载写入SslStream,它填充我的MemoryStream以便使用加密数据进行写入.使用来自MemoryStream的加密数据,我填充SocketAsyncEventArgs缓冲区并调用TcpClient SendAsync方法.对于读取,它恰恰相反.
我不能说特别激动我移动这样的数据但只要你不让你的MemoryBuffer对象不断重新分配,这不是性能问题.至少这样,我可以只使用框架和我自己的代码,而不依赖于第三方软件.
您可以采用 SSL/TLS 协议的第三方实现(例如我们的SecureBlackbox ),并将其与任何传输一起使用,包括异步模式下的 .NET 套接字。SecureBlackbox 的 SSL 服务器组件没有自己的套接字,而是触发事件,您可以在事件处理程序中编写与套接字相关的代码。这样您就可以插入任何传输设备,甚至是非插座传输设备。
| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |