一个具体协议族需要通过调用 sock_register() 函数向系统注册其创建socket的方法。例如 Unix socket 就在初始化时通过下面的代码注册: struct net_proto_family unix_family_ops = { PF_UNIX, unix_create }; static int __init af_unix_init(void) { ... sock_register(&unix_family_ops); ... return ...
PF_NETLINK sockets(Netlink Socket):支持 Kernel Space 和 User Space 之间的通信,常用于网络管理和网络监测等场景,例如:获取内核中的网络信息、配置内核的网络参数、监控网络状态等。 PF_UNIX sockets(UNIX socket):用于 Unix-like 系统中的多进程之间通信。 值得注意的是,虽然不同的协议族都使用了同一套 Socke...
*/ int main(void) { int listenfd; if ((listenfd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) ERR_EXIT("socket error"); unlink("/tmp/test socket"); //地址复用 struct sockaddr_un servaddr; memset(&servaddr, 0, sizeof(servaddr)); servaddr.sun_family = AF_UNIX; strcpy(servaddr....
unix_socket = socket(PF_UNIX, type, 0); error = socketpair(PF_UNIX, type, 0, int *sv); DESCRIPTION( 描述 ) PF_UNIX (也称作 PF_LOCAL ) 套接字族用来在同一机器上的提供有效的进程间通讯.Unix 套接字可以是匿名的(由 socketpair(2)创建), 也可以与套接字类型文件相关联. Linux 还支持一种...
我们首先来说一下PF_INET和AF_INET,虽然标准提倡在指定demain参数的时候,优先使用PF_INET,但是大量已经编写的c代码遵循旧的协议。目前情况是AF_UNIX=PF_UNIX,AF_INET=PF_INET。但是将来是不是这样不好说啊。 不同于socketpari函数的demain参数只能指定为PF_LOCAL,socket函数可以用于生成所支持的任何协议族的套接口...
unix socket是基于文件系统和缓冲区实现的,内核中有个缓冲区队列unix_datas,长度取决于socket数量。 代码语言:c++ 复制 #define AF_UNSPEC 0 #define AF_UNIX 1 #define AF_INET 2 #define PF_UNIX AF_UNIX #define PF_INET AF_INET // extern struct unix_proto_data unix_datas[NSOCKETS]; ...
对于BSD,是AF,对于POSIX是PF UNIX系统支持AF_INET,AF_UNIX,AF_NS等,而DOS,Windows中仅支持AF_INET,它是网际网区域. 在函数socketpair与socket的domain参数中有AF_UNIX,AF_LOCAL,AF_INET,PF_UNIX,PF_LOCAL,PF_INET.这几个参数有AF_UNIX=AF_LOCAL,PF_UNIX=PF_LOCAL,AF_LOCAL=PF_LOCAL,AF_INET=PF_INET....
.family = PF_UNIX, .owner = THIS_MODULE, .bind = unix_bind, .connect = unix_stream_connect, .socketpair = unix_socketpair, .listen = unix_listen, ... }; 我们找到 connect 函数的具体实现,unix_stream_connect。 //file: net/unix/af_unix.c ...
<sys/un.h> PF_UNIX/PF_LOCAL 地址家族。用于运行在一台计算机上的程序间的本地通信,不用在网络中。 <arpa/inet.h> 和IP地址相关的一些函数。 <netdb.h> 把协议名和主机名转化成数字的一些函数。 API函数 这些是伯克利套接字提供的库函数。
#define pf_local af_local #define pf_inet af_inet #define pf_ax25 af_ax25 …… 所以我们在指定socket的类型时这四个域可以随便用啦,笔者这里统一使用af_unix了。 type 参数可被设置为 sock_stream(流式套接字)或 sock_dgram(数据报式套接字),对于本地套接字来说,流式套接字(sock_stream)是一个...