2012-02-10 21 views
1

私はBoost Asioを使って本当に小さなRTSPクライアントを実装しようとしています。 SETUPにサーバがあり、PLAYコマンドが送信され、その後、ある時点でTEARDOWNが要求されます。シンプルなRTSPクライアント/例を実装する

私は実装自体に問題があります。接続自体については 私はその後、メッセージ自体は、このように処方されるTCPコネクション

tcp::resolver resolver(*io_service); 
tcp::resolver::query query("192.168.0.42","554"); 
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); 
tcp::resolver::iterator end; 


tcp::socket socket(*io_service); 
boost::system::error_code error = boost::asio::error::host_not_found; 
while (error && endpoint_iterator != end) 
{ 
    socket.close(); 
    socket.connect(*endpoint_iterator++, error); 
} 

をしたいと思うように私はそれを行う:それは、私がこれを送信し、Wiresharkのでそれをキャッチした場合今

boost::asio::streambuf request; 
std::ostream request_stream(&request); 
request_stream << "DESCRIBE " << "rtsp://192.168.0.42/mpeg4?multicast/ RTSP/1.0\r\nCSeq: 1\r\n"; 
boost::asio::write(socket, request); 

それをRTSPメッセージとして認識しません。

どうしたのですか?私はちょうど私のストリームで要求を間違って策定していますか?あるいは全く異なるタイプの接続を使用する必要がありますか?

シンプルなRTSPクライアントを実装する方法はありますか?私は何も見つけることができませんでした。 libcurlのような他のライブラリの使用を提案しないでください。私はそれを自分で実装する必要があります。

答えて

2

DESCRIBEメッセージの最後に「\ r \ n」が必要です。

request_stream << "DESCRIBE " << "rtsp://192.168.0.42/mpeg4?multicast/ RTSP/1.0\r\nCSeq: 1\r\n\r\n"; 
+0

Ha、oh my gosh、私はちょうどその新しい行を欠いていました... – Toby

関連する問題