【发布时间】:2013-07-12 04:19:10
【问题描述】:
我正在使用 winpcap 驱动程序来嗅探数据包, 所以我实际上使用其中的数据包转储示例来获取 pkt_data 等,
当我处理 tcp 标头时,我打印我的端口,我看到它是 80
但是当我尝试做类似的事情时:
if(ntohl(tcpheader->source_port == 80) || (ntohl(tcpheader->dest_port == 80))) //doesnt work :(
{
printf("****************HTTP***********");
}
如果永远不正确 但我清楚地看到我的 printf
printf(" |-Source Port : %u\n",ntohs(tcpheader->source_port));
printf(" |-Destination Port : %u\n",ntohs(tcpheader->dest_port));
其中一个在我的输出中是 80,但我从来没有看到上面的 http,所以我似乎遗漏了一些东西,请您指点我吗?
【问题讨论】:
-
你应该调用 ntohs(),而不是 ntohl()。端口号为 16 位。