UNIX 域套接字概述

简介: UNIX 域套接字概述

在笔记套接字中已经介绍了套接字的分类:流式套接字SOCK_STREAM )、数据报套接字SOCK_DGRAM )和原始套接字SOCK_RAW )。需要注意的是 BSD 分支最初引入套接字时只支持本地通信, 1986 年之后进行了扩展,开始支持网络协议。因此,流式套接字与数据报套接字,除可以完成网络通信外,也可以完成本地通信。换句话说,网络通信中,可以使用流式套接字与数据报套接字来完成。同理,本地通信中,也可以使用流式套接字与数据报套接字来实现。


通常把用于本地通信的套接字成为 UNIX域套接字


UNIX域套接字只能用于在同一个计算机的进程间通信。虽然网络套接字也可以用于单机进程间的通信,但使用UNIX域套接字不仅简单而且高效。UNIX域套接字仅仅进行数据复制,不会执行在网络协议栈中需要处理的添加、删除报头文、计算校验和、计算报文顺序等复杂操作,因而在本地的进程间通信中,更加推荐使用UNIX域套接字。UNIX域套接字常用于前后台进程间的通信。


当套接字用于网络通信时,在编程过程中,使用结构体 struct_sockaddr_in (包含协议、IP地址、端口)和套接字文件描述符关联起来。同样,当套接字用于本地通信时,可以用结构体 struct_sockaddr_un 描述一个本地地址。

#define Unix_PATH_MAX 108
typedef unsigned short __kernel_sa_family_t;
struct sockaddr_un {
    __kernel_sa_family_t sun_family; // AF_Unix
    char sun_path[Unix_PATH_MAX];     // pathname
};点击复制复制失败已复制


将宏定义即重定义替换为原型,则结构体原型如下所示:

struct sockaddr_un {
    unsigned short sun_family; // 协议类型
    char sun_path[108];           // 套接字文件路径
};
目录
相关文章
|
6月前
|
网络协议 Unix 数据安全/隐私保护
UNIX域套接字接口相似性
UNIX域套接字接口相似性
62 4
|
6月前
|
监控 安全 Unix
UNIX域套接字(Unix Domain Socket)在安全性和隐私性
UNIX域套接字(Unix Domain Socket)在安全性和隐私性
280 2
|
6月前
|
网络协议 Unix API
UNIX域套接字
UNIX域套接字
236 4
|
Unix Linux
Linux本地套接字(Unix域套接字)----SOCK_DGRAM方式
这里介绍一下Linux进程间通信的socket方式---Local socket。这篇主要是介绍下SOCK_DGRAM方式的通信,即数据包的方式(与UDP类似),面向无连接。
308 0
|
Unix
UNIX 域数据报套接字
UNIX 域数据报套接字
125 0
UNIX 域数据报套接字
|
网络协议 Unix
UNIX 域流式套接字
UNIX 域流式套接字
163 0
UNIX 域流式套接字
|
缓存 网络协议 Unix
UNIX 域流式套接字
UNIX 域流式套接字
125 0
UNIX 域流式套接字
|
Unix 网络协议
UNIX域协议(无名套接字)
关于什么是UNIX域套接字可以参考:http://www.cnblogs.com/xcywt/p/8185597.html这里主要介绍非命名的UNIX域套接字的用法。1.socketpair函数先看man手册: SYNOPSIS       #include           /* See ...
1271 0
|
网络协议 Unix C语言
UNIX域协议(命名套接字)
这里主要介绍命名UNIX域套接字 1.什么是UNIX域套接字Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务通信的一种方式。是进程间通信(IPC)的一种方式。它提供了两类套接字:字节流套接字(有点像TCP)和数据报套接字(有点像UDP)UNIX域数据报服务是可靠的,不会丢失消息,也不会传递出错。
1240 0