Non so se a qualcuno importa più perché questo è così vecchio, ma ho dovuto fare proprio questa settimana e non riuscivo a trovare nulla su internet che ha soddisfatto le mie esigenze. Forse c'è qualcosa di nuovo nel framework che fa questo che non sono stato in grado di trovare ... Indipendentemente, vorrei postare il codice sorgente ma da quando l'ho scritto per la mia azienda e tendono a disapprovarlo, descriverò l'approccio I preso:
Poiché SslStream acquisisce un flusso nel costruttore, ho implementato il mio sottotipo Stream con un MemoryStream sottostante per le letture e un altro per le scritture. Passerò anche il TcpClient a questo oggetto.
Ho usato il TcpClient per fare l'handshake per l'impostazione della connessione SSL. Dopo aver autenticato il server o il client a seconda di come lo sto usando, utilizzo quindi i miei due MemoryStream per la lettura/scrittura SslStream.
Quindi per le scritture Async, prima scrivo il mio carico utile su SslStream che popola il mio MemoryStream per scrivere con dati crittografati. Con i dati crittografati da MemoryStream, compilo il buffer SocketAsyncEventArgs e richiama il metodo SendAsync TcpClient. Per le letture, è praticamente l'opposto.
Non posso dire che mi ecciti in particolare a spostare i dati in questo modo ma finché non si lasciano costantemente riallineare gli oggetti MemoryBuffer, non si tratta di un problema di prestazioni. Almeno in questo modo, posso utilizzare solo il framework e il mio codice senza fare affidamento su software di terze parti.
John hai avuto ulteriori informazioni su questo? – Dreaddan