socket大家应该很熟悉,以tcp/ip协议族为传输协议,用于跨主机通信,而unixsocket就是在socket的框架上发展出一种IPC机制(进程间通信),UDS(UNIX Domain Socket)提供面向流和面向数据包两种API接口,类似于TCP和UDP,其中SOCK_STREAM是很可靠的,消息既不会丢失也不会顺序错乱,比传统的socket效率更高,一般是tcp传输的两倍...
UNIX Domain SOCKET 有 SOKCET_DGRAM(数据包套接字)和 SOCKET_STREAM(流套接字)两种模式,类似于UDP和TCP,但是面向消息的UNIX socket也是可靠的,消息既不会丢失也不会顺序错乱。 UNIX domain socket 是全双工的,API 接口语义丰富,相比其它 IPC 机制有明显的优越性,目前已成为使用最广泛的 IPC 机制,比如 X Window...
Unix domain socket 又叫 IPC(inter-process communication 进程间通信)socket,用于实现同一主机上的进程间通信。 socket 原本是为网络通讯设计的,但后来在 socket 的框架上发展出一种 IPC 机制,就是 UNIX domain socket。虽然网络 socket 也可用于同一台主机的进程间通讯(通过 loopback 地址 127.0.0.1),但是 UNIX...
#define BUFSIZE 512*1024 //define unix domain socket path #define pmmanager "/tmp/pmmanager" #define pmapi "/tmp/pmapi" int main(int argc, char** argv) { char rx_buf[BUFSIZE]; int pmmanager_fd, ret; socklen_t len; struct sockaddr_un pmmanager_addr, pmapi_addr; //create pmmanager ...
在包体不大于 1KB 的时候,UDS 的性能大约是 TCP 的两倍多。所以,在本机网络 IO 的场景下,如果对性能敏感,你可以考虑使用 Unix Domain Socket。 不过最后还得多说一句,性能优化的关键在于找到瓶颈。如果本机网络 IO 不在性能瓶颈上,优化这一点可能帮助也不大。
Unix domain socket 是 POSIX 标准中的一个组件,所以不要被名字迷惑,linux 系统也是支持它的。 下面通过一个简单的 demo 来理解相关概念。程序分为服务器端和客户端两部分,它们之间通过 unix domain socket 进行通信。 服务器端程序 下面是一个非常简单的服务器端程序,它从客户端读字符,然后将每个字符转换为大写...
Socket 原本是为网络通信而设计的,但后来在 Socket 的框架上发展出一种 IPC 机制,就是 UDS。 Unix Domain Socket(UDS,Unix 域套接字),它还有另一个名字叫 IPC(inter-process communication,进程间通信)。 使用UDS 的好处显而易见:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应...
和基于IP和端口的Socket一样,Unix domain Socket也可以分为Stream Socket和Datagram Socket。 我们最多看到Unix domain socket的地方可能就是docker了,作为一种容器技术,docker需要和实体机进行快速的数据传输和信息交换,一般情况下UDS的文件是以.socket结尾的,我们可以在/var/run目录下面使用下面的命令来查找: ...
对于程序本身来说,只需要读取和写入共享的socket文件即可,也就是说不同的程序之间通过socket文件来进行数据交互。 和基于IP和端口的Socket一样,Unix domain Socket也可以分为Stream Socket和Datagram Socket。 我们最多看到Unix domain socket的地方可能就是docker了,作为一种容器技术,docker需要和实体机进行快速的数据传...
对于程序本身来说,只需要读取和写入共享的socket文件即可,也就是说不同的程序之间通过socket文件来进行数据交互。 和基于IP和端口的Socket一样,Unix domain Socket也可以分为Stream Socket和Datagram Socket。 我们最多看到Unix domain socket的地方可能就是docker了,作为一种容器技术,docker需要和实体机进行快速的数据传...