我一直在嘗試了一小會兒,以獲得從TCP數據包報頭中的偏移值和不斷收到的0。這裏的值是頭文件,我立足我的代碼掉的鏈接:有效載荷偏移值在netinet/tcp.h中?
http://unix.superglobalmegacorp.com/BSD4.4/newsrc/netinet/tcp.h.html
我正在使用tcpHdr-> th_off並且正在接收值0.我知道該值是4位長,所以上面的行可能不是我想要的。對於我使用th_flags值的標誌,然後按位執行並使用我正在查找的已定義標誌,但我沒有看到使用有效負載偏移值執行此操作的方法。我怎樣才能獲得有效載荷偏移值?
編輯:
這裏是我的tcpHdr指針的初始化:
packetSt += ipHdr->ip_hl*4; // Moves IP header pointer to the TCP header location.
tcpHdr = (struct tcphdr*) packetSt; // My TCP header pointer.
下面是我用得到的TCP偏移值行:
tcpHeader->th_off;
我居然看到了我剛剛修復了代碼中的錯誤。這是以下幾點:
是
tcpHdr = (struct tcphdr*) (packetSt + sizeof(ipHdr));
改爲
tcpHdr = (struct tcphdr*) packetSt;
既然我已經感動了packetSt提前由ipHrd-> th_hl。我會試試這個,但是如果這看起來正確的話,還是會想讓別人知道。
你是否更改過tcpHdr的值?你的代碼在哪裏失敗? – dave 2014-11-01 16:00:23