我花了几个小时来转换旧的 net v2 项目并将其移植到 C# 中的 WinRT。它是一个向 DVB 服务 (DVBViewer) 发送命令的 RTSP 客户端。因此,此时,WinForm 程序已经更新并且运行良好。连接、发送和接收命令到服务器,最后流到我的 localhost UDP 端口都可以正常工作,并且 ts 流可以通过 VLC 和 RTP 协议完全读取。
但现在,我想用这些东西编写我的 Metro 应用程序。我设法完成了这项工作,似乎快完成了(至少是 Socket 和流的东西)。
但是现在,我陷入了一个愚蠢的问题。我无法与 RTSP 服务器通信。我的 Stream Reader/Writer 不工作,我已经尝试了很多。
该应用程序基于 Uniriotec.DV 项目的代码,因此有关更多信息,您可以通过 google 找到它。
所以,这就是我遇到的问题:它是主句柄,就是将 StreamSocket 与 Stream(消息)放在一起。
//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:我需要等待 writer.StoreAsync(); 因为答案是发送大约 10-15 秒。稍后,当服务器准备好处理请求并向我发送 SessionID 等时。