关于 错误 udphdr 没有 uh_sum 的解决

 STEVENS所著的《UNP》第29章的程序执行时会出现 “struct udphdr 没有 成员名为 uh_sum”之类的错误.

在netinet/udp.h中对UDP的定义如下:

 /* UDP header as specified by RFC 768, August 1980. */
#ifdef __FAVOR_BSD


struct udphdr
{
  u_int16_t uh_sport; /* source port */
  u_int16_t uh_dport; /* destination port */
  u_int16_t uh_ulen; /* udp length */
  u_int16_t uh_sum; /* udp checksum */
};


#else


struct udphdr
{
  u_int16_t source;
  u_int16_t dest;
  u_int16_t len;
  u_int16_t check;
};
#endif

只有在BSD兼容版本里,才会有uh_sum.

因此解决方法就是在

#include <netinet/udp.h>

的上方加入“ #define __FAVOR_BSD” 便可


对于缺少 ip_var.h 和udp_var.h文件的问题,可以参考  http://blogold.chinaunix.net/u2/86142/showart_1989888.html

你可能感兴趣的:(struct,header)