UNIX 域协议
1. UNIX域协议
利用socket编程接口实现本地进程间通信
UNIX域协议套接字:可以使用TCP,也可以使用UDPSOCK_STREAM -----> TCP 面向字节流
SOCK_DGRAM -----> UDP 面向数据报
UNIX域协议并不是一个实际的协议族,而是在单个主机上执行客户 / 服务通信的一种方式(IPC的一种方法)UNIX域数据报(SOCK_DGRAM)是可靠的,不会丢失消息
IP协议中使用 IP地址 + 端口号标识客户端和服务端UNIX域协议使用普通文件系统中的路径名标识客户端和服务端
UNIX域协议的特点:和TCP比较,速度快,数据报不要传递到主机外,也不需要进行封包和拆包
tcp/ip协议将IP地址作为通信双方的身份标识,UNIX域协议使用一个绝对路径作为IP地址。在头文件 include <sys/un.h> 中,用如下结构用来描述UNIX域协议地址:
//vim /usr/include/linux/un.h #define UNIX_PATH_MAX 108 // Unix域协议的地址结构体的具体描述 // include <sys/un.h> struct sockaddr_un { __kernel_sa_family_t sun_family; // 协议族 char sun_path[UNIX_PATH_MAX]; /* Unix域协议地址,是以'\0'结束的本地文件系统中的绝对路径名, 如: "/tmp/xxx.socket" */ }
编程方法:
(1) 类似TCP
server(服务器):
socket 创建一个套接字
bind 一个服务器地址,等待客户端发信息,把一个套接字和服务器地址绑定到一起
listen 监听
accept 接收客户端连接请求
连接成功,开始通信
关闭
client(客户端):
创建一个套接字
(bind 一个本地地址,把一个套接字和本地地址绑定到一起) -----> 可以不要,内核会为你的socket指定一个地址
初始化一个服务器地址(文件系统路径名)开始通信
关闭
(2) 类似UDP
server(服务器):
创建一个套接字
bind 一个服务器地址,等待客户端发信息,把一个套接字和服务器地址绑定到一起
开始通信
关闭
client(客户端):
创建一个套接字
(bind 一个本地地址,把一个套接字和本地地址绑定到一起) ----> 可以不要,内核会为你的socket指定一个地址
初始化一个服务器地址(文件系统路径名)
开始通信
关闭
2. 代码实现
原文地址:https://blog.csdn.net/qq_68915288/article/details/140698237
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!