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

2 回答 2

4
  • 对于第一个问题,包括定义TH_SYN和的标题TH_ACK。在我的系统上netinet/tcp.h
  • 对于第二个问题,把ipheadertcpheader变成指针
  • 对于第三个问题,我认为您需要一个strtoul但我不确定
于 2012-07-27T13:34:43.733 回答
3

对于问题 1,您需要

#include <netinet/tcp.h>

对于问题 2,struct ipheader应该struct ipheader *在您的声明和演员表中,以及struct tcpheader应该是struct tcpheader *

对于问题3,optarg是一个指针,需要解引用,所以引用为*optarg

于 2012-07-27T13:36:12.113 回答