2017-06-29 12 views
0

私はTCPライブラリを作成してSSLをサポートしたいと思っています。ライブラリは、接続/切断部分をデータストリームの処理から分離します。私はバイトのチャンクを送受信するストリームハンドラでスロットすることができますが、そのデータを供給するソケットにはアクセスできません。私は、ストリームを供給れるtcpClientずにSslStreamを使用したいSSLStreamをTcpSocketなしで使用する方法

TcpClient client = new TcpClient(); 
Sslstream sslStream = new SslStream(client.GetStream(), true, ValidCerts); 

SslStreamを使用してのすべての例はかなりこのように見えます。

私はこれを行うことができますか?

TcpClient client = new TcpClient(); 
Stream stream = client.GetStream(); 
... 
SslStream ssl = new SslStream(stream, true, ValidCerts); 
client.GetStream()

は呼が単にインラインた;

+0

問題は何ですか? 'client.GetStream'ではなく' SslStream'コンストラクタにあなたが持っているストリームを入れてください。それがうまくいかない場合 - コードを表示し、どのように動作しないのか(例外の詳細)。 – Evk

+0

SSL/TLSをどれくらいうまく理解していますか?あなたは、[RFC 5246](https://tools.ietf.org/html/rfc5246)を見て、ネットワーク活動に関して必要とされるものを知る必要があります。 –

+0

私はこれについてあまりにも多くのことを考えているかもしれませんが、2つのストリーム(出入り口)が必要であると思ったでしょう。そうでなければ、入ってくるバイトは出て行くバイトを上書きします。 – Neil

答えて

0

例は、のように書き換えることができます。 SslStreamは、TcpClientではなく、Streamとのみ対話します。

+0

私はTcpClientストリームを使いたくないので、自分のストリームを作成したいと思います。 – Neil

+0

'TcpClient.GetStream()'は 'NetworkStream'を返しますが、_any_' Stream'実装を使うことができます。 –

+0

私が '' MemoryStream''を提供しても、うまく動作していないようです。それはすべきだと思いますか? – Neil

関連する問題