
图1 Unix域套接字通信模型
1.Unix域通信模型
Unix域套接字通信模型如图1所示
2.api接口
1)socket()
- int socket (int domain, int type, int protocol);
API定义是一样的,不过这里的第一个参数,也就是域一定要设置成AF_UNIX或AF_LOCAL,而不是普通TCP/IP套接字的AF_INET。第二个参数表示套接字的类型,分为流套接字(SOCK_STREAM)和数据包套接字(SOCK_DGRAM)。不同于普通的AF_INET的Socket,由于都是在本机通过内核通信,所以SOCK_STREAM和SOCK_DGRAM都是可靠的,不会丢包也不会出现发送包的次序和接收包的次序不一致的问题。它们的区别仅仅是,SOCK_STREAM无论发送多大的数据都不会被截断,而对于SOCK_DGRAM来说,如果发送的数据超过了一个报文的最大长度,则数据会被截断。而最后一个参数,表示协议,对于Unix域套接字来说,其一定是被设置成0。因此,一般通过下面的方式创建一个Unix域套接字:
int sockfd = socket(PF_LOCAL,SOCK_DGRAM, 0); // 数据包式套接字 &nbs

本文详细介绍了Unix域套接字的通信模型,包括API接口的使用,如socket()、bind()、recvfrom()和sendto()。讲解了Unix域套接字的地址结构、普通路径名与抽象路径名的区别,以及权限设置。此外,还提供了Unix域套接字在数据包模式下的应用示例代码。
最低0.47元/天 解锁文章
2698

被折叠的 条评论
为什么被折叠?



