Использование SslStream с IOCP - PullRequest
1 голос
/ 11 августа 2009

Я написал TCP-сервер, используя асинхронные методы класса Socket / IOCP, BeginSend () / BeginRead () / etc. Я хотел бы добавить возможность SSL с использованием SslStream, но из интерфейса похоже, что Socket и SslStream не предназначены для совместной работы, в частности, потому что я вообще не использую Streams, а SslStream, похоже, зависит от наличия потока для работы с .

Возможно ли это, или я смотрю не в том месте? Нужно ли мне создавать свой собственный подкласс Stream, который подается в мои экземпляры Socket и на что указывает SslStream? Для меня важно, чтобы мой сервер использовал IOCP из-за проблем с масштабированием.

1 Ответ

5 голосов
/ 11 августа 2009

Оберните ваше гнездо в NetworkStream, чтобы использовать его с SslStream.

Socket socket;
...
using (var networkStream = new NetworkStream(socket, true))
using (var sslStream = new SslStream(networkStream, ...))
{
   // use sslStream.BeginRead/BeginWrite here
}

Потоки также предоставляют методы BeginRead / BeginWrite, так что вы не потеряете этот аспект.

...