如何从有效负载unsigned char buf获取IP和PORT?

时间:2014-03-09 20:27:56

标签: c++ c char unsigned payload

我有unsigned char buf:

IP位于第197位,端口位于第205位。 如何从这个unsigned char buf获得正确的IP和PORT?

我尝试了一些数字转换,但没有运气:(

任何帮助或提示都表示赞赏。

2 个答案:

答案 0 :(得分:1)

我假设,IP从第197位开始,它占据阵列中的4个位置(每个八分圆1个),端口占1个位置。在C / C ++中,应使用索引196访问第197位。因此,您可以通过以下方式访问IP和端口地址的4个八分位数,

short int octants[] ={buf[196],buf[197],buf[198],buf[199]} ;
short int portId = buf[204] ; 

答案 1 :(得分:0)

好的,我找到了解决方案,感谢正确方向踢的人:)

输出正确结果的代码是:

printf("IP: %d.%d.%d.%d", buf[197], buf[198], buf[199], buf[200]);

int port = 0;                           // Start with zero
port |= buf[204] & 0xFF;                // Assign first byte to port using bitwise or.
port <<= 8;                             // Shift the bits left by 8 (so the byte from before is on the correct position)
port |= buf[205] & 0xFF;

printf(" Port: %d", port);

结果是:IP:8.8.8.8端口:53