0

古いネット v2 プロジェクトを変換し、それを C# の WinRT に移植するのに何時間も費やしました。コマンドを DVB サービス (DVBViewer) に送信する RTSP クライアントです。そのため、現時点では、WinForm プログラムが更新され、問題なく動作しています。サーバーへの接続、コマンドの送受信、および最終的にローカルホスト UDP ポートへのストリームは完全に機能し、ts ストリームは VLC および RTP プロトコルを介して完全に読み取り可能です。

しかし今、この内容で Metro アプリを作成したいと思います。私はなんとか仕事をすることができ、ほぼ完成しているようです(少なくともソケットとストリームのもの)。

しかし今、私はばかげた問題に行き詰まっています。RTSP サーバーと通信できません。ストリーム リーダー/ライターが機能せず、いろいろ試しました。

このアプリは Uniriotec.DV プロジェクトのコードに基づいているため、詳細については Google で検索できます。

それで、ここで私が立ち往生しているポイントがあります:それはメインハンドルであり、ストリーム(メッセージ)と一緒にStreamSocketを取得しています。

//Set input and output stream filters in the main client app
RTSPBufferedReader = new BufferedReader<Stream> (RTSPsocket);
RTSPBufferedWriter = new BufferedWriter<Stream> (RTSPsocket);

namespace RTSP.Client
{
    public class BufferedReader<T> : StreamReader where T : Stream
    {
        private StreamSocket socket;
        private T unbufferedStream;
        private StreamSocket streamSocket;

        public T UnbufferedStream
        {
            get { return unbufferedStream; }
            set { unbufferedStream = value; }
        }

        public BufferedReader(T myStream)
            : base(myStream)
        {
            unbufferedStream = myStream;
        }

        public BufferedReader(StreamSocket mySocket)
            : base(new Stream(mySocket)) // <== here is the problem, saying "could'nt establish an instance of the abstract or interface class "System.IO.Stream"....
        {
            this.streamSocket = mySocket;
        }
    }
}

私がどこでエラーをしたか分かりますか?

答えてくれてありがとう、ジョー


PS: await writer.StoreAsync(); が必要です。答えは約10〜15秒で送信されるためです。後で、サーバーがリクエストをスレッド化する準備ができたときに、SessionID などを返信します。

4

1 に答える 1