阅读:1370回复:2
网络字节顺序的问题
这里问一个菜鸟问题:
我拦截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; } 不知道怎么样才能得到正确的结果? |
|
沙发#
发布于:2004-10-13 09:25
真的没人感兴趣吗,这个问题在用sock通信分析协议时常遇到的问题.
可能是问题太菜啦,高手不肯指点啊 |
|
板凳#
发布于:2004-10-13 12:24
你调试过没有?哪条语句出问题?
这个应该和网络字节顺序无关吧?你为什么不看看包的内容呢? 有个办法:自己发包,然后截,再对照原始包就可以知道了。 |
|