2010-05-17 174 views

回答

2

的LIVE555 API的同步和异步之间的主要区别是,你现在必须在RTSP请求中指定的处理程序。一旦DESCRIBE请求完成,您的处理程序将从live555事件回调中调用。

在RTSPClient.hh ResponseHandler所定义为:

typedef void (responseHandler)(RTSPClient* rtspClient, 
      int resultCode, char* resultString); 

当你的处理程序被调用,live555是会给你以下信息:

  • 在其上发出命令的RTSP客户端 - >这允许您随后调用下一个RTSP方法。

  • 结果代码为0表示成功,正如果RTSP错误码被服务器如果发生了某些网络/套接字错误返回,并且负。

使用此信息来决定如何在您的处理程序中继续。看看RTSPClient.hh,其中解释了所有这些。

E.g.这意味着,当你要调用的方法sendDescribeCommand:

unsigned sendDescribeCommand(responseHandler* responseHandler, 
     Authenticator* authenticator = NULL); 

您必须指定(签名ResponseHandler所的),该处理器将被调用一次DESCRIBE已经完成。在您的处理程序中,您必须根据结果代码决定是否要执行SETUP(再次指定处理程序)或终止(如果发生某些错误)。

由于jenseb建议openRTSP客户端提供了一个非常好的起点。