現在、通常は以下のコード フィールドの例のような RTSP メッセージを解析しようとしています (RF2326 から取得)。しかし、メッセージの構造がやや不規則であり、デリミタの定義が弱いなどの理由で、いくつかの問題に直面しています。
これに関するいくつかの考え:
- 文字列を 1 行ずつステップ実行: しかし、コマンド/パラメーターが 2 行に分割されている場合はどうなるでしょうか?
- キー/値の解析のために特定の文字で行を分割する -> たとえば「:」の最初の出現がキー/値の区切り文字であることを確認する必要があります。
- 行をスペース (" ") で分割する - CSeq:312 (スペースなし) のような行も発生する可能性があります。
また、ヘッダー部分(例の Content-Length まで)が改行( )によって本文から分離されているとしか想定できません\r\n
。1つしかない場合はどうなりますか?
このエレガントで信頼できる解決方法はありますか? 多分LINQで?
クライアント -> サーバー:
DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 312 Accept: application/sdp, application/rtsl, application/mheg
サーバー -> クライアント:
RTSP/1.0 200 OK CSeq: 312 Date: 23 Jan 1997 15:35:06 GMT Content-Type: application/sdp Content-Length: 376 v=0 o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 m=whiteboard 32416 UDP WB a=orient:portrait