簡體   English   中英

C#:SSL與SocketAsyncEventArgs?

[英]C#: SSL with SocketAsyncEventArgs?

我正在使用C#.NET開發套接字服務器。 我正在使用SocketAsyncEventArgs類提供的異步模型,因為它必須是一個高性能服務器,以便在短時間內支持許多連接。 接下來,我想保護客戶端和服務器之間的通信,我想我可以使用SSL。

有沒有辦法在SocketAsyncEventArgs模型中使用SSL? 我知道.NET有SSL保護的SslStream類,但我需要使用SocketAsyncEventArgs來獲得高性能。

是否可以在較高級別使用SSL,而無需在服務器代碼中實現它?

提前致謝。

不知道是否有人在乎,因為這已經太老了,但我本周需要做的就是在互聯網上找不到滿足我需求的東西。 也許在框架中有一些新的東西,我無法找到...無論如何,我會發布源代碼,但因為我為我的公司寫了它,他們往往不贊成,我只是勾勒出方法我拿:

由於SslStream在構造函數中獲取流,因此我實現了自己的Stream子類型,其中底層MemoryStream用於讀取,另一個用於寫入。 我也將TcpClient傳遞給了這個對象。

我使用TcpClient進行握手以設置SSL連接。 根據我使用它的方式對服務器或客戶端進行身份驗證后,然后使用我的兩個MemoryStreams進行SslStream讀/寫。

因此,對於Async寫入,我首先將我的有效負載寫入SslStream,它填充我的MemoryStream以便使用加密數據進行寫入。 使用來自MemoryStream的加密數據,我填充SocketAsyncEventArgs緩沖區並調用TcpClient SendAsync方法。 對於讀取,它恰恰相反。

我不能說特別激動我移動這樣的數據但只要你不讓你的MemoryBuffer對象不斷重新分配,這不是性能問題。 至少這樣,我可以只使用框架和我自己的代碼,而不依賴於第三方軟件。

您可以采用SSL / TLS協議的第三方實現,例如我們的SecureBlackbox ,並將其用於任何傳輸,包括異步模式下的.NET套接字。 SecureBlackbox的SSL服務器組件沒有自己的套接字,而是觸發事件,在其處理程序中編寫與套接字相關的代碼。 這樣你就可以插上任何一個傳輸器,甚至是非插座器。

我想我可能找到了一個提供此功能的項目。

https://sourceforge.net/projects/socketservers/

我仍在使用它並且遇到加載服務器證書的問題,但是,查看它看起來很有前途的源代碼。

我不確定的一個方面是它調用secur32.dll而不是純粹的c#實現,所以我不確定它的內存/性能影響是什么。

sourceforge項目頁面上的詳細信息很少,關於項目的目標是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM