size_t ssize_t socklen_t
size_t
解释一:为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样。
typedef unsigned long size_t
ssize_t是signed size_t
size_t是标准C库中定义的,应为unsigned int。定义为typedef int ssize_t。而ssize_t:这个数据类型用来表示可以被执行读写操作的数据块的大小.它和size_t类似,但必需是signed.意即:它表示的是sign size_t类型的
[注] read返回的就是ssize_t, 因为返回的错误码可以为负数,所以必需用它。
socklen_t
数据类型"socklen_t"和int应该具有相同的长度.否则就会破坏 BSD套接字层的填充.POSIX开始的时候用的是size_t, Linus Torvalds(他希望有更多的人,但显然不是很多) 努力向他们解释使用size_t是完全错误的,因为在64位结构中 size_t和int的长度是不一样的,而这个参数(也就是accept函数 的第三参数)的长度必须和int一致,因为这是BSD套接字接口标准.最终POSIX的那帮家伙找到了解决的办法,那就是创造了 一个新的类型"socklen_t".Linux Torvalds说这是由于他们 发现了自己的错误但又不好意思向大家伙儿承认,所以另外 创造了一个新的数据类型.
ssize_t是signed size_t
[注] read返回的就是ssize_t, 因为返回的错误码可以为负数,所以必需用它。
socklen_t