特殊格式报文的实现
来源:互联网 发布:软件开发是什么职业 编辑:程序博客网 时间:2024/06/07 09:12
The RTP header has the following format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
从上面的显示中我们可以看到rtp包在网路上传送时的字节序。那在程序中怎么写呢?
来看一下人家写好的代码就知道了。
struct RTPFixedHeader
{
#if __BYTE_ORDER == __BIG_ENDIAN
/// For big endian boxes
unsigned char version:2; ///< Version, currently 2
unsigned char padding:1; ///< Padding bit
unsigned char extension:1; ///< Extension bit
unsigned char cc:4; ///< CSRC count
unsigned char marker:1; ///< Marker bit
unsigned char payload:7; ///< Payload type
#else
/// For little endian boxes
unsigned char cc:4; ///< CSRC count
unsigned char extension:1; ///< Extension bit
unsigned char padding:1; ///< Padding bit
unsigned char version:2; ///< Version, currently 2
unsigned char payload:7; ///< Payload type
unsigned char marker:1; ///< Marker bit
#endif
uint16 sequence; ///< sequence number
uint32 timestamp; ///< timestamp
uint32 sources[1]; ///< contributing sources
};
怎么样,明白了吧。
以后要发格式特殊的报文的时候就这样写,就ok了。
而且重要的一点,这个顺序是以字节为单位的。 也就是以字节为单位的话,顺序是不变的,都是由低到高。但是在一个字节内,要进行区分的话,根据大小字节序来调整。
貌似这个和我们平时见的整型数值,表达有点不一样。 整型的话,是以字节为单位。
在小子节序时, 低字节在低位。
在大字节序时, 高字节在低位。
类似的表达方式,还有种更牛的。。。。 我服了
typedef struct {
uint8
Wlan_WpaAKm_None:1,
Wlan_WpaAKm_Unspecified:1,
Wlan_WpaAKm_Psk:1,
reserved:3,
Wlan_Wpa2AKm_Unspecified:1,
Wlan_Wpa2AKm_Psk:1;
} Wlan_WpaAKmBit;
用逗号分隔,牛的。
- 特殊格式报文的实现
- DNS的报文格式
- 基于JSON格式报文的AJAX通用实现
- 基于JSON格式报文的AJAX通用实现
- cxf拦截器,实现对接收到的报文和发送出去的报文格式自定义
- ARP协议的报文格式
- 目前常用的报文格式
- ARP协议的报文格式
- ARP协议的报文格式
- PPP协议的报文格式
- ARP协议的报文格式
- ARP协议的报文格式
- ARP协议的报文格式
- MODBUS RTU的报文格式
- ARP协议的报文格式
- can报文的帧格式
- C#实现 CAT021报文格式解析
- UILabe的特殊格式
- 剧本翻译之メンアットワーク!4 ~ハンター達よ永遠に~猎人们的永远(序章2)
- 报名号
- J2ME学习系列之如何将J2ME与XML集成
- try
- Active Report报表显示Access数据库的照片
- 特殊格式报文的实现
- 实用的DBHelper
- ASP.NET权限解决
- 如何提高你的工作效率?
- error while loading shared libraries的解決方法
- VB中如何设定COM组件和ActiveX控件的CLSID值
- Ajax 弹出登陆框的实现原理
- 组合条件查询
- 让人喷饭的“百度·知道”问答