数据结构

地址结构

这些结构是有关于地址的数据结构。

  • 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的结构。

这个还是借助上次的图来说明:
Result 链表结构

函数之间的关系

首先还是上一个章节的Sockets Interface图,这也是Socket部分最重要的图。
socket client-server 结构

那么,所列出的这些函数之间有什么关系呢?他们读取了什么数据,又产生了什么数据呢?下面用两张图来进行说明。

Client

Server

图例:

方框代表函数
圆圈代表数据

蓝色实方框代表主要函数
浅蓝色虚方框代表析构or关闭函数

绿色圈代表内部数据
金色圈代表外部数据
橙色圈代表几个重要的fd:File Descriptor