首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

看WinPcap文档时有一段代码不懂,该如何处理

2012-01-14 
看WinPcap文档时有一段代码不懂今天看WinPcap文档时有一段不懂,求教大家。下面Obtainingadvancedinformatio

看WinPcap文档时有一段代码不懂
今天看WinPcap文档时有一段不懂,求教大家。下面Obtaining   advanced   information   about   installed   devices例子中的一个函数,参数为((struct   sockaddr_in   *)a-> addr)-> sin_addr.s_addr,a为pcap_addr_t   *。
#define   IPTOSBUFFERS         12
char   *iptos(u_long   in)
{
        static   char   output[IPTOSBUFFERS][3*4+3+1];//?
        static   short   which;
        u_char   *p;

        p   =   (u_char   *)∈
        which   =   (which   +   1   ==   IPTOSBUFFERS   ?   0   :   which   +   1);//?
        sprintf(output[which],   "%d.%d.%d.%d ",   p[0],   p[1],   p[2],   p[3]);//?
        return   output[which];
}

希望高手能把这段代码详细的解释一下。特别是标了//?这几行。感谢大家。


[解决办法]
这个函数是把 DWORD的IP地址,转成 字符串
#define IPTOSBUFFERS 12
char *iptos(u_long in)
{
static char output[IPTOSBUFFERS][3*4+3+1];//? IPTOSBUFFERS:可以放几个IP地址.
//3*4+3 + 1 : 假设IP地址是 255.255.255.255 就需要 3*4个数字+3个点+一个空字符结束

static short which;
u_char *p;

p = (u_char *)∈
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);//? 如果转换IP的个数大于总Buffer数,就从0开始.
sprintf(output[which], "%d.%d.%d.%d ", p[0], p[1], p[2], p[3]);//? 这个不用解释了.
return output[which];
}

热点排行