linux本地套接字

本文详细介绍了Linux本地套接字的通信流程,包括创建socket、绑定和连接地址,以及两种命名方式:具体文件命名和抽象命名空间。本地套接字主要应用于同一主机上的进程间双向通信,提供流式和数据报式的套接字类型。文章还给出了通信示例。
摘要由CSDN通过智能技术生成

本地套接字实现的是同一主机的不同进程间的通信,且建立的通信是双向的通信。socket本地通信与网络通信使用的是统一套接口,只是地址结构中的参数不同。

1、socket流程

(1)创建socket

创建套接字需要使用 socket 系统调用,其原型如下:

int socket(int domain, int type, int protocol);

参数:

domain :指定协议族,对于本地套接字来说,其值须被置为 AF_UNIX 枚举值;

type :套接字类型,type 参数可被设置为 SOCK_STREAM(流式套接字)或 SOCK_DGRAM(数据报式套接字)

protocol 参数指定具体协议,protocol 字段应被设置为 0;

返回:生成的套接字描述符

套接字类型:

流式套接字(SOCK_STREAM)是一个有顺序的、可靠的双向字节流,相当于在本地进程之间建立起一条数据通道;

数据报式套接字(SOCK_DGRAM)相当于单纯的发送消息,在进程通信过程中,理论上可能会有信息丢失、复制或者不按先后次序到达的情况,但由于其在本地通信,不通过外界网络,这些情况出现的概率很小。

//创建本地socket
  int server_sockfd = socket(PF_UNIX, SOCK_STREAM, 0);  

(2)绑定和连接地址

1)绑定地址

通过绑定地址来指定服务器端的地址(struct sockaddr_un),本地socket的地址是本地文件的地址。

 bind 绑定定函数:

int bind(int socket, const struct sockaddr *address, size_t address_len);

参数:

 socket表示服务器端的套接字描述符

address 表示需要绑定的本地地址,是一个 struct sockaddr_un 类型的变量

address_len 表示该本地地址的字节长度

本地socket绑定,监听该地址的网络事件

struct sockaddr_un server_addr;  
server_addr.sun_family = AF_UNIX;  
strncpy(server_addr.sun_path, UNIX_DOMAIN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值