进程之间通讯-------------UNIX域通信

本文介绍了UNIX域套接字在本地主机上实现高效进程间通信的优势,如无需处理网络协议,提供可靠的双向数据传输。讨论了命名和非命名UNIX域套接字的使用场景,并给出了示例代码,包括TCP和UDP通信的例子。
摘要由CSDN通过智能技术生成

进程之间的通讯使用很频繁,在本地主机上两个不同的进程之间需要通讯时,我们可以采用unix域套接字来通讯,虽然因特网域套接字也可以达到同一目的,但是unix域套接字效率更高,主要体现如下:

(1)UNIX域套接字仅仅复制数据

(2)不像因特网域的套接字,它不需要处理协议,不需要产生顺序号,不需要发送确认报文,不需要添加或者删除网络头部,无需计算校验和。

UNIX域套接字用于同一台主机上的进程间通讯时,提供了STREAM和DIAGRAM两种,UNIX域的数据服务是可靠的,既不会丢失也不会传错。

非命令的UNIX域套接字只能用于亲缘关系的父子进程之间通讯

为了创建一对非命名的,相互连接的UNXI域套接字,用户可以使用socketpair函数


参数介绍:

第1个参数d(domain),表示协议族,只能为AF_LOCAL或者AF_UNIX;
第2个参数type,表示类型,只能为0。
第3个参数protocol,表示协议,可以是SOCK_STREAM或者SOCK_DGRAM。用SOCK_STREAM建立的套接字对是管道流,与一般的管道相区别的是,套接字对建立的通道是双向的,即每一端都可以进行读写。不管是数据流还是数据报协议,unix域套接字都是可靠的,不丢包的。

第4个参数sv,用于保存建立的套接字对。

示例代码如下

#include <stdio.h>    
#include <stdlib.h>    
#include <sys/socket.h>    
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
       
int main(void)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值