tcp ip check我错过了什么

时间:2013-07-13 23:03:33

标签: c tcp header port

我使用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 ,所以我似乎错过了一些你可以指点我吗?

2 个答案:

答案 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比较的结果而不是端口号。