C - 字节数组结构(dns查询)

时间:2012-11-18 09:32:10

标签: c dns bytearray structure

我有这些结构:

typedef struct dnsQuery {
  char header[12];
  struct TdnsQuerySection *querySection;
} TdnsQuery;

typedef struct dnsQuerySection {
  unsigned char *name;
  struct TdnsQueryQuestion *question;
} TdnsQuerySection;

typedef struct dnsQueryQuestion {
  unsigned short qtype;
  unsigned short qclass;
} TdnsQueryQuestion;

我在recvfrom的字节数组中查询了dns。 我试图从字节数组得到结构:

TdnsQuery* dnsQuery = (TdnsQuery*)buf;
printf("%u", dnsQuery->querySection->question.qtype);

为什么我收到错误解除指向不完整类型的指针?我这样做了吗?或者我怎样才能从该数组中获取dns查询结构?我需要dns查询问题并输入。

1 个答案:

答案 0 :(得分:1)

您的查询部分打印机是不完整的类型。你需要事先键入它并且不使用结构关键字或使用结构名称而不是typedef。 e.g:

typedef struct foo Foo;

struct {
    Foo* querySection;
    // effectively same as above
    struct foo* querySection2;

    // NOT the following. 
    struct Foo* querySectionWrong; 
};