声明:文章系作者原创,其原文在我的自主博客Zablog上,链接为http://zablog.me/2015/12/10/ICS_Socket2/,分享时请注明原文地址,禁止用于商业目的。
数据结构
地址结构
这些结构是有关于地址的数据结构。
Struct sockaddr_in
用来存储 协议家族Protocal family IPv4的IP地址和端口号。Struct sockaddr
即SA
用来作为普遍的、一般的、用于存储地址的结构。
PS: 因为C是面向过程的语言所以没有继承的概念。如果用面向对象的思维来分析的话,可以认为sockaddr是sockaddr_in的基类(父类),sockaddr_in是子类,专用于互联网IPv4协议栈下的应用地址的存储。Struct sockaddr_storage
就是sockaddr_in
信息结构
- Struct addrinfo
getaddrinfo这个函数的作用是输入 主机名(或地址)+ 端口号(或服务) ,输出Socket信息(包含上述的sockaddr地址信息)。
Struct addrinfo **result 是存储得到的addrinfo的结构。
这个还是借助上次的图来说明:
函数之间的关系
首先还是上一个章节的Sockets Interface图,这也是Socket部分最重要的图。
那么,所列出的这些函数之间有什么关系呢?他们读取了什么数据,又产生了什么数据呢?下面用两张图来进行说明。
图例:
方框代表函数
圆圈代表数据蓝色实方框代表主要函数
浅蓝色虚方框代表析构or关闭函数绿色圈代表内部数据
金色圈代表外部数据
橙色圈代表几个重要的fd:File Descriptor