简易RTSP例子(c++)

头文件

#ifndef _GETSTRINGS_H_

#define _GETSTRINGS_H_

#include <string> using std::string;

class TranslateRTSP

{

  public:  TranslateRTSP();  

  ~TranslateRTSP() {}

   void DoProcess(char data[]);//解析RTSP命令

  //待获取的字段  

  string m_sVersion;

  string m_sStatus;

  string m_sDescribe;  

  string m_sSequence;  

  string m_sSession;  

  string m_sProtocol;

};

#endif

源文件

#include "GetStrings.h"

TranslateRTSP::TranslateRTSP() {}

void TranslateRTSP::DoProcess(char data[])

{  

  int nLength=strlen(data);  

  int nLen=0;  

  int nPoint=0;  

  string sChars;  

  string sTag;    

  for (int i=0;i<nLength;++i)  

  {  

     if (data[i] == ' ' || data[i] == ':' || data[i] == ';' || data[i] == '\r' || data[i] == '\n')   

    {   

       if (0 != nLen)    

      {     

        sChars.clear();//清空字符串

            string temp=data;     

        sChars=temp.substr(nPoint,nLen);

           if ("Description" == sTag)    

          {      

          m_sDescribe=sChars;      

          sTag.clear();     

        }

          if ("Status" == sTag)     

        {      

          m_sStatus=sChars;      

          sTag="Description";     

         }

          if ("RTSP/1.0" == sChars)     

       {      

          m_sVersion=sChars.substr(5,3);      

          sTag="Status";    

        }

          if ("CSeq" == sTag)     

        {      

          m_sSequence=sChars;      

          sTag.clear();     

       }

         if ("Session" == sTag)     

       {      

          m_sSession=sChars;      

           sTag.clear();     

       }

           if ("Transport" == sTag)     

       {      

          m_sProtocol=sChars.substr(8,3);      

          sTag.clear();     

        }

         if ("interleaved=0-1" == sTag)     

       {      

          sTag.clear();      

          break;     

          }

          if (sTag != "Status" && sTag != "Description")     

       {      

         if (data[i-1] != ' ' || data[i-1] != ':' || data[i-1] != ';' || data[i-1] != '\r' || data[i-1] != '\n')       

          sTag=sChars;      

        }     

        nPoint+=nLen+1;     

        nLen=0;    

     }    

     else    

     nPoint++;  

   }   

  else    

    nLen++;  

  }

}

posted @ 2013-07-19 14:17  ★末日3000  阅读(1568)  评论(0)    收藏  举报