6

Socket的一些Guide2 - 结构补充

 3 years ago
source link: http://zablog.me/2015/12/10/ICS_Socket2/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Socket的一些Guide2 - 结构补充

2015年12月10日

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

  • 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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK