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

网络字节顺序的问题

楼主#
更多 发布于:2004-10-12 15:36
这里问一个菜鸟问题:
我拦截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:%d\n", pRtpHead->version);
TRACE("RTP PayloadType: %d\n", pRtpHead->pt);
TRACE("RTP Sequence:%d\n", 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 09:25
真的没人感兴趣吗,这个问题在用sock通信分析协议时常遇到的问题.
可能是问题太菜啦,高手不肯指点啊
firstrose
驱动牛犊
驱动牛犊
  • 注册日期2003-06-11
  • 最后登录2010-03-23
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-13 12:24
你调试过没有?哪条语句出问题?

这个应该和网络字节顺序无关吧?你为什么不看看包的内容呢?

有个办法:自己发包,然后截,再对照原始包就可以知道了。
游客

返回顶部