一 点睛
socket地址分为通用socket地址和专用socket地址。
通用socket地址出现在一些socket api函数中,比如bind函数、connect函数等。
专用socket地址是为了方面使用而提出来的。
两者可以相互转换。
二 通用socket地址
通用socket地址是一个结构体,名字是sockaddr,定义在/usr/include/bits/socket.h中。
#include <bits/sockaddr.h>
/* Structure describing a generic socket address. */
struct sockaddr
{
__SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
char sa_data[14]; /* Address data. */
};
宏展开后的形式是
struct sockaddr
{
sa_family_t sin_family; //sa_family_t是unsigned short int
char sa_data[14];
};
sin_family用来存放地址族(或协议族)类型,常用取值如下:
-
PF_UNIX:UNIX本地域协议族
-
PF_INET:IPv4协议族
-
PF_INET6:IPv6协议族