我使用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 ,所以我似乎错过了一些你可以指点我吗?
答案 0 :(得分:1)
if(ntohl(tcpheader->source_port == 80) ...
您正在转换比较结果
您需要比较转换结果和80:
if (ntohs(tcpheader->source_port) == 80) ...
答案 1 :(得分:0)
而不是ntohl(tcpheader->source_port == 80)
你应该写ntohl(tcpheader->source_port) == 80
。否则,您ntohl
比较的结果而不是端口号。