2012-07-27 102 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是一个指针,而需要间接引用,所以

相关问题