UNIX Domain Socket(UDS)是什么?同一台主机间进程间通信
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNIX Domain Socket(UDS)是什么?同一台主机间进程间通信相关的知识,希望对你有一定的参考价值。
文章目录
概述
Linux下进程通讯方式有很多,比较典型的有套接字,平时比较常用的套接字是基于TCP/IP协议的,适用于两台不同主机上两个进程间通信, 通信之前需要指定IP地址. 但是如果同一台主机
上两个进程间通信用套接字,还需要指定ip地址,有点过于繁琐. 这个时候就需要用到UNIX Domain Socket, 简称UDS,
UDS的优势:
- UDS传输不需要经过网络协议栈,不需要打包拆包等操作,只是数据的拷贝过程
- UDS分为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据包套接字),由于是在本机通过内核通信,不会丢包也不会出现发送包的次序和接收包的次序不一致的问题
流程介绍
如果熟悉Socket的话,UDS也是同样的方式, 区别如下:
- UDS不需要IP和Port, 而是通过一个文件名来表示
- domain 为 AF_UNIX
- UDS中使用sockaddr_un表示
struct sockaddr_un
sa_family_t sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* pathname */
;
服务端: socket -> bind -> listen -> accet -> recv/send -> close
客户端: socket -> connect -> recv/send -> close
参考文章:Linux下进程间通讯方式 - UNIX Domain Socket
以上是关于UNIX Domain Socket(UDS)是什么?同一台主机间进程间通信的主要内容,如果未能解决你的问题,请参考以下文章
Dapr 1.7 之 Unix Domain socket 他来了
【socket】关于Unix域套接字(Unix Domain Socket)