2012-07-27 104 views
0

我收到了一些編譯錯誤,我找不出來,儘管我確信它們很愚蠢,但我找不到能夠通過其他渠道幫助我的答案。編譯錯誤時遇到問題

問題1:(這些是TCP協議的一部分)

error: ‘TH_SYN’ undeclared (first use in this function) 
error: ‘TH_ACK’ undeclared (first use in this function) 

tcp.tcph_flags = TH_SYN; 
tcp.tcph_flags = TH_ACK; 

問題2:

error: conversion to non-scalar type requested 

const int one = 1; 
char buffer[PCKT_LEN]; 
struct sockaddr_in sin; 
struct ipheader ip; 
struct tcpheader tcp; 

ip = (struct ipheader) buffer;      /* ERROR POINTS HERE */ 
tcp = (struct tcpheader) buffer + ip.iph_ihl *4; /* AND HERE */ 

問題3:

warning: assignment makes integer from pointer without a cast 

case 'i': dip = inet_addr(optarg); 
      dstip = (optarg); /* ERROR POINTS TO THIS LINE */ 
      break; 

現在我希望我已經複製足夠的有關錯誤的相關信息,以便您能夠提供幫助,但是如果我遺漏了某些信息,請告訴我。對於問題1,我相信我錯過了某種頭文件,但我不知道是哪一個。問題2和3是指針問題,但我不確定它們爲什麼不正確。在此先感謝:)

回答

4
  • 對於第一個問題,請包括標頭定義TH_SYNTH_ACK。在我的系統是netinet/tcp.h
  • 對於第二個問題,請ipheadertcpheader爲指針
  • 對於第三個問題,我想你需要一個strtoul但我不確定
+0

@Woodrow道格拉斯感謝稱其爲*optarg你們兩個!但事情是,我已經包含了''。我正在使用Backtrack5,這有可能是頭文件不同? – youjustreadthis 2012-07-27 14:07:00

+0

@youjustreadthis在'usr/include'中執行'grep -r TH_SYN ./*'。 – cnicutar 2012-07-27 14:15:43

+0

剛剛做了,它給了我這個:'./dumbnet/tcp.h:#define TH_SYN 0x02/*同步序列號*/ ./netinet/tcp.h:# define TH_SYN 0x02 ' 我不假設#和netinet之間的空間是否是問題? – youjustreadthis 2012-07-27 15:49:03

3

對於問題1,你需要

#include <netinet/tcp.h> 

對於問題2,struct ipheaderstruct ipheader *在你的宣言,並投兩個,以及struct tcpheader應該是struct tcpheader *

對於問題3,OPTARG是一個指針,而需要間接引用,所以

相關問題