Unix域套接字(Unix Domain Sockets)是一种在同一台机器上的进程间通信(IPC)机制。它们类似于TCP/IP套接字,但仅限于同一台计算机上的进程之间通信。Unix域套接字有两种类型:SOCK_DGRAM和SOCK_SEQPACKET。 SOCK_DGRAM 类型:数据报套接字(Datagram Sockets) ...
int ret; sd = socket(PF_LOCAL, SOCK_DGRAM, 0); if (sd == -1) { perror("socket()"); goto socket_err; } hisend.sun_family = AF_UNIX; snprintf(hisend.sun_path, UNIX_PATH_MAX, "rcv_sock"); ret = connect(sd, (struct sockaddr *)&hisend, sizeof(hisend)); if (ret == -...
SOCK_DGRAM 意味着会提供定长的、不可靠、无连接的通信。 protocol参数指定为 0 即可。 UNIX domain socket 与网络 socket 编程最明显的不同在于地址格式不同,用结构体 sockaddr_un 表示,网络编程的 socket 地址是 IP 地址加端口号,而 UNIX domain socket 的地址是一个 socket 类型的文件在文件系统中的路径,这个...
int socket(int domain, int type, int protocol) domain(域) : AF_UNIX type : SOCK_STREAM/ SOCK_DGRAM : protocol : 0 1. 2. 3. 4. SOCK_STREAM(流) : 提供有序,可靠的双向连接字节流。 可以支持带外数据传输机制, 无论多大的数据都不会截断 SOCK_DGRAM(数据报):支持数据报(固定最大长度的无...
Unix套接字(Unix domain sockets)是一种用于同一主机上进程间通信(IPC,Inter-Process Communication)的机制。与网络套接字不同,Unix套接字不使用网络协议栈,因此性能更高。它们主要用于需要高效、低延迟的本地进程通信场景。 Unix套接字的类型 流套接字(SOCK_STREAM): ...
#include <sys/socket.h> #include <sys/un.h> #include<stdio.h>#define BUFSIZE 32 int main(void) { int sd; char buf[BUFSIZE]; struct sockaddr_un hisend; int ret; sd = socket(PF_LOCAL, SOCK_DGRAM, 0); if (sd == -1) { ...
数据报套接字(SOCK_DGRAM): 提供无连接的、消息为单位的数据传输,类似于UDP。 数据传输不保证顺序和可靠性。 Unix套接字的工作流程 服务器端操作流程: 创建套接字:使用系统调用创建一个套接字文件描述符。 绑定套接字:将套接字绑定到一个文件系统路径,类似于网络套接字绑定到IP地址和端口。
⬆️图 1 Unix Domain Socket通信模型(2)Socket类型和命名空间UDS有3种Socket类型,分别为SOCK_STREAM、SOCK_DGRAM和SOCK_SEQPACKET。其中SOCK_STREAM是面向数据流的类型,类似于管道。SOCK_DGRAM是面向数据报的类型,类似于消息队列。SOCK_SEQPACKET是面向连接的类型,保留了消息边界。每个UDS都拥有一个名称。既可以使用...
Unix Domain Socket通常称为 【unix域套接口】 或 【本地套接口】,它用于位于同一台机器(操作系统)的进程间通信。它已经被纳入POSIX Operating Systems标准。 它支持以下三种方式数据传输: (1) 可靠的字节流传输(SOCK_STREAM, 对应TCP); (2) 无序、不可靠的数据包传输(SOCK_DGRAM,对应UDP)。
unix domain socket 是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC: Inter-Process Communication),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向...