AF_UNIX实现linux本地socket通信的笔记

AF_UNIX与AF_LOCAL是同义的,用于本地进程间通信。主要工作模式包括SOCK_STREAM(类似TCP)、SOCK_DGRAM(类似UDP但风险小)和SOCK_SEQPACKET(保留消息边界但可能带来接收延迟)。设置缓冲区容量和处理SIGPIPE中断是关键点。命名socket需要特定路径权限,而非命名socket需以@开头且首字符为空。
摘要由CSDN通过智能技术生成

AF_UNIX与AF_LOCAL是一样的,只是历史遗留原因。

有SOCK_STREAM、SOCK_DGRAM、SOCK_SEQPACKET三种工作模式 

 

1、SOCK_STREAM

流字节套,类似TCP,由于socket发送缓冲区的缘故,多次write数据会被缓冲区整合为一次底层send。禁用TCP Nagle算法的方式对AF_UNIX无效。

 

#include <netinet/in.h> // for IPPROTO_TCP
#include <netinet/tcp.h> // for TCP_NODELAY

int nodelay = 1;
ret = setsockopt(mSocket, IPPROTO_TCP, TCP_NODELAY,(void*)&nodelay,sizeof(nodelay));
if (ret == -1) {
    printf("Couldn't setsockopt(TCP_NODELAY)\n");
}

 

2、SOCK_DGRAM

报文字节套,类似UDP的报文方式,理论上会导致错乱、丢失等风险,只是AF_UNIX性能很高,风险概率较小。SOCK_DGRAM的应用场合很少,因为流式套接字在本地的连接时间可以忽略,而SOCK_DGRAM发送接收都需要携带对方的本地地址,所以效率并没有提高。

 

 

3、SOCK_SEQPACKET

SOCK_SEQPACKET提供一个顺序确定的,可靠的,双向基于连接的so

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值