网络编程总是伴随有各种协议,IP、TCP/UDP、应用层都有各自的协议栈。《TCP/IP 详解》第一卷就是“协议”,这些协议大都写在RFC里面。但是有时协议描述的并不是很准确,不同的厂商可以有自己的实现。
以RTSP协议为例,分为Client和Server两个部分的实现,由于两部分的实现可能不是同一个公司,所以有时配合起来就会发生问题。首先,即使都是Google Android的系统,版本不同,表现出来的行为也不太一样。例如2.3.2版本中,PLAY request里面没有带Range信息,而这在其他Client上是比较少见的,所以有些不能处理这种问题的Server就会出现问题。因为一般的Server都是有选择地实现RTSP协议,有些细节就会被忽略。另外,在Nokia的Client里,有些是可以处理SDP协议里"a=control:”中使用相对路径的,另一些则可以处理使用绝对路径。Server端必须要能识别这些Client,然后区分对待。
这里最主要的问题是如何区别对待不同的client,到处使用if-else肯定是不优雅的。另外是否需要定义一个相关的表来记录相关问题。
虽然现在还没有考虑好,但如果能够重新设计一个server,这个问题是应该考虑的。