UNIX域套接字---------填充时注意事项

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));




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值