UNIX域协议用于单个主机中服务器和客户端通信(属于IPC),提供字节流套接字(类似TCP)和数据报套接字(类似UDP)
struct sockaddr_un {
sa_family_t sun_family; /*PF_UNIX或AF_UNIX */
char sun_path[104]; /* 路径名 */
};
存放在sun_path数组中的路径名称必须以空字符结尾。如果没有指定地址,那么就是sun_path[0]的值,为0,因为使用前我们
对结构体清空了。这个值等价于IPV4的INADDR_ANY,或者IPV6的IN6ADDR_ANY_INIT.
填充地址时,需要注意,POSIX规范没有定义sun_path数组大小,填充时,应该自己计算,以确定会不会越界。名称使用绝对路径
struct sockaddr_un addr1;
char pathname = "/mnt/myself";
memset(&addr1, 0, sizeof(addr1));
addr1.sun_family = AF_LOCAL;
len = sizeof(addr1.sun_path);
if(strlen(pathname) > (len - 1))
{
printf("pathname is too long\n");
return;
}
strncpy(addr1.sun_path, pathname , strlen(pathname));