数据类型 - socklen_t,sa_family_t

时间:2015-09-15 17:59:09

标签: c linux sockets network-programming socklen-t

我正在使用sys/socket.h lib构建一个简单的套接字Web服务器,我遇到了socklen_tsa_family_t数据类型,并对它们的实际内容感到困惑目的是。

定义:

  • sa_family_t - 无符号整数类型。
  • socklen_t - 无符号不透明整数类型,长度至少为32位。

现在我明白<sys/socket> lib声明了三个结构(sockaddrmsghdrcmsghdr),其中包含声明这些数据类型的成员。

  • sa_family_t sa_family address family
  • socklen_t msg_namelen size of address
  • socklen_t msg_controllen ancillary data buffer len
  • socklen_t cmsg_len data byte count, including the cmsghdr

但为什么要创建新的数据类型,为什么不只使用unsigned int数据类型?

1 个答案:

答案 0 :(得分:5)

通过为这些字段声明特定类型,它将它们与特定表示(如unsigned int)分离。

不同的体系结构可以自由地为这些字段定义不同的大小,使用这些特定类型的代码不需要担心给定计算机上int的大小。