2013-07-13 58 views
0

我使用WinPcap的驅動程序嗅探包, 所以我實際使用數據包轉儲的例子裏面得到pkt_data等,TCP IP檢查我失去了一些東西

當我處理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

你應該調用ntohs(),而不是ntohl()。端口號是16位。 – EJP

回答

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

你轉換比較

結果你需要比較的轉化率和80的結果:

if (ntohs(tcpheader->source_port) == 80) ... 
+0

OMG :)謝謝:) 哇我很失敗:)) – user2533527

+0

夥計們我改變了它,但我仍然不能看到http – user2533527

+0

的打印更新你現在的方式 - 如果'printf'輸出'80 「還有一些錯誤。 (另外,請注意,您的「http」'printf'中沒有'\ n'這意味着它不會刷新)。 –

0

相反的ntohl(tcpheader->source_port == 80)你應該寫ntohl(tcpheader->source_port) == 80。否則你ntohl比較的結果而不是端口號。

+0

謝謝你,我看了30分鐘(這裏3點) ,我不能得到什麼是錯的:) – user2533527

相關問題