freefly
驱动牛犊
驱动牛犊
  • 注册日期2001-11-08
  • 最后登录2007-02-11
  • 粉丝0
  • 关注0
  • 积分113分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:1139回复:1

网络字节顺序问题

楼主#
更多 发布于:2004-10-12 15:38
这里问一个菜鸟问题:
我拦截rtp数据包,下面是报头定义:
#pragma pack(push,1)
typedef struct _RTPHEADER
{
unsigned int version:2; /* protocol version */
unsigned int p:1; /* padding flag */
unsigned int x:1; /* header extension flag */
unsigned int cc:4; /* CSRC count */
unsigned int m:1; /* marker bit */
unsigned int pt:7; /* payload type */
unsigned short seq; /* sequence number */
unsigned int ts; /* timestamp */
unsigned int ssrc; /* synchronization source */
unsigned int csrc[1]; /* optional CSRC list */
}RTP_HEADER, *PRTP_HEADER;
#pragma pack(pop)

可是因为网络字节顺序问题,我用下面的方法得到错误结果,
BOOL CProcRTP::IsRTP(unsigned char *pkt, int len)
{
/*if(len<sizeof(RTP_HEADER))
return FALSE;
PRTP_HEADER pRtpHead = (PRTP_HEADER)pkt;
TRACE("RTP Version:%dn", pRtpHead->version);
TRACE("RTP PayloadType: %dn", pRtpHead->pt);
TRACE("RTP Sequence:%dn", pRtpHead->seq);
if((pRtpHead->version==2)&&(pRtpHead->pt==4))
return TRUE;
}

不知道怎么样才能得到正确的结果?
freefly
驱动牛犊
驱动牛犊
  • 注册日期2001-11-08
  • 最后登录2007-02-11
  • 粉丝0
  • 关注0
  • 积分113分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-13 08:53
这是一个vc开发网络通信常遇到的问题,一直没有简便的方法.有那为
大虾解决啦,请多指教 :)
游客

返回顶部