我目前正在尝试解析通常看起来像下面代码字段中的示例的 RTSP 消息(取自 RF2326)。但是由于消息的某种不规则结构,以及定义较弱的分隔符等,我遇到了几个问题。
对此的一些想法:
- 逐行遍历字符串:但是如果命令/参数分成两行怎么办?
- 按某些字符拆分行以进行键/值解析-> 我必须确保第一次出现的例如“:”是键/值的分隔符。
- 用空格 (" ") 分割行 - 但也可能出现像 CSeq:312 (没有空格) 这样的行。
另外:我只能假设标题部分(直到示例中的 Content-Length)与正文分开,以中断(\r\n
)。如果只有一个呢?
有没有办法解决这个优雅可靠的问题?也许与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