0

我正在使用 winpcap 驱动程序来嗅探数据包,所以我实际上使用其中的数据包转储示例来获取 pkt_data 等,

当我处理 tcp 标头时,我打印我的端口,我看到它 80

但是当我尝试做类似的事情时:

  if(ntohl(tcpheader->source_port == 80) || (ntohl(tcpheader->dest_port == 80))) //doesnt work :(
{
    printf("****************HTTP***********");
}         

if 从来都不是真的,但我在 printf 中清楚地看到

printf(" |-Source Port : %u\n",ntohs(tcpheader->source_port));
printf(" |-Destination Port : %u\n",ntohs(tcpheader->dest_port));

其中一个在我的输出中是 80,但我从来没有从上面看到http,所以我似乎遗漏了一些东西,你能指点我吗?

4

2 回答 2

1
if(ntohl(tcpheader->source_port == 80) ...

您正在转换比较的结果

您需要将转换的结果与 80 进行比较:

if (ntohs(tcpheader->source_port) == 80) ...
于 2013-07-13T23:10:15.683 回答
0

而不是ntohl(tcpheader->source_port == 80)你应该写ntohl(tcpheader->source_port) == 80. 否则你ntohl是比较的结果而不是端口号。

于 2013-07-13T23:10:33.487 回答