1

非常に基本的なネットワーク操作を実行しようとしていますが、問題が発生しています。

元々、 を使用NetworkStream.Lengthして新しい を作成しようとしていましたが、シーク操作をサポートしていないためbyte[]、これができないことが明らかになりました。NetworkStream

次に、シーク操作を可能NetworkStreamにするを にコピーする方法を示す例をいくつか見つけました。MemoryStreamここまでは順調ですね。

またはそれは?

usingステートメントのスコープに達すると、アプリケーションは基本的に停止します。それはまだ走っていて、何かをしているのですが、何が何だかわかりません。コードは次のとおりです。

    void HandleClientComm(object client)
    {
        TcpClient tcpClient = (TcpClient)client;

        //copy client stream to memory stream to allow seek operations
        MemoryStream clientStream = new MemoryStream();
        using (var clientRequestStream = tcpClient.GetStream())
        {
            clientRequestStream.CopyTo(clientStream);
        }

        //...
    }

それで、私の問題が私を完全に困惑させたところがあります。NetworkStream何らかの処理を行うために myを aにコピーする必要がありますMemoryStreamが、このタスクだけでは、必要以上に困難であることがわかっています。

以前にこの問題に遭遇した人はいますか?

4

1 に答える 1