一、UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要
simba@ubuntu:~/Documents/code/linux_programming/UNP/socket$ ./uxdomsock_sendfd buf=ilove 证明父进程确实可以打开test.txt 文件。 最后提醒一点,只有unix域协议才能在本机进程间传递文件描述符,如果想要在没有亲缘关系的进程间传递,则不能用socketpair函数,要用socket()函 数 才行。有些同学可能会说,文件描...
一、UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应...
AF_UNIX:UNIX域通信域,适用于本地进程间通信。 在实际开发中,我们通常使用AF_UNIX来实现本地进程间通信。 #include<sys/socket.h>#include<sys/un.h>#include<unistd.h>intsocket_fd=socket(AF_UNIX,SOCK_STREAM,0); 1. 2. 3. 4. 5. 三、套接字类型 UNIX域套接字支持以下两种主要的套接字类型: SO...
在前面我们介绍了UNIX域套接字编程,更重要的一点是UNIX域套接字可以在同一台主机上各进程之间传递文件描述符。 下面先来看两个函数: #include <sys/types.h> #include <sys/socket.h> ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags); ...
/* 创建本地socket */sockFd = socket(AF_UNIX, SOCK_DGRAM, 0);//数据包方式if ( sockFd <= 0){perror("socket error");return sockFd;}/* 绑定监听口 */int flag = 1;iRet = setsockopt(sockFd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag));setSocketAttr(sockFd);unlink(UNIX_SOCKET_...
UNIX域套接字是一种用于在同一台主机上的进程之间进行通信的机制,它不依赖于网络协议栈,而是直接在主机的文件系统中创建特殊文件来进行通信。 本文将详细分析UNIX域套接字进行通信的原理,以帮助读者更好地理解和应用这一技术。 1. 创建套接字 进程通过调用`socket`系统调用创建一个UNIX域套接字。该系统调用返回...
int socket(int domain, int type, int protocol) domain(域) : AF_UNIX type : SOCK_STREAM/ SOCK_DGRAM : protocol : 0 1. 2. 3. 4. SOCK_STREAM(流) : 提供有序,可靠的双向连接字节流。 可以支持带外数据传输机制, 无论多大的数据都不会截断 ...
/* 创建本地socket */ sockFd = socket(AF_UNIX, SOCK_DGRAM, 0);//数据包方式 if ( sockFd <= 0) { perror("socket error"); return sockFd; } /* 绑定监听口 */ int flag = 1; iRet = setsockopt(sockFd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag)); ...
正如可以给fopen的传入不同参数值,以打开不同的文件。创建socket的时候,也可以指定不同的参数创建不同的socket描述符,socket函数的三个参数分别为: domain:即协议域,又称为协议族(family)。常用的协议族有,AF_INET、AF_INET6、AF_LOCAL(或称 AF_UNIX,Unix域socket)、AF_ROUTE等等。协议族决定了socket的地址类型...