0

ソケットを介してデータを転送したいのですが、現在メモリストリームを作成しています。

ネットワークストリームも使用できます。

誰かがc#ネットワークストリームとメモリストリームの違いを理解するのを手伝ってもらえますか?

4

3 に答える 3

3

ANetworkStreamはソケットに直接関連しています。自身の長さを認識せず、シークできず、読み取り/書き込み関数は受信/送信APIに直接バインドされます(したがって、読み取りと書き込みは互いに完全に無関係です)。タイムアウトになる可能性があり、さらにデータを待機している場合、読み取りにかなりの時間がかかる可能性があります。

AMemoryStreamは基本的にローカルのラッパーbyte[]です。既知の長さ(変更可能)があり、シークでき、読み取り/書き込みは直接関連しています。どちらも同じ位置のカーソルをインクリメントし、何かを書き込んだり、巻き戻したり、読み取ったりできます。すべての操作は非常にタイムリーです。

「類似点は何か」を尋ねる方が簡単かもしれません。これは単純です。両方とも、のサブクラスであるため、読み取り/書き込みAPIを備えていますStream

于 2012-09-07T10:30:22.153 に答える
0

両方のストリームはStreamから派生しており、このクラスはさまざまな目的のためにワーパーです

于 2012-09-07T10:30:19.770 に答える
0

私の理解によると、ネットワークストリームはネットワークインターフェイスから読み取ります。メモリストリームを使用する場合(つまり、同じシナリオで)、すべてのデータが最初にメモリに読み込まれます(実際の最後まで読み取ると想定しています)ストリーム)、その後、読み取り操作はメモリから読み取ります。

メモリストリームで発生する最初の読み取り操作では、すべてのデータをメモリにロードする必要があります。

ネットワークストリームの場合、データが到着したときにデータを読み取ることができます。

于 2012-09-07T10:30:43.353 に答える