UDS(UNIX Domain Socket)提供面向流和面向数据包两种API接口,类似于TCP和UDP,其中SOCK_STREAM是很可靠的,消息既不会丢失也不会顺序错乱,比传统的socket效率更高,一般是tcp传输的两倍,并且不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据...
(recvbuf, stdout); write(conn, recvbuf, strlen(recvbuf)); } close(conn); } /* unix domain socket与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍。*/ int main(void) { int listenfd; if ((listenfd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) ERR_EXIT("socket error");...
unix_socket = socket(PF_UNIX, type, 0); error = socketpair(PF_UNIX, type, 0, int *sv); DESCRIPTION( 描述 ) PF_UNIX (也称作 PF_LOCAL ) 套接字族用来在同一机器上的提供有效的进程间通讯.Unix 套接字可以是匿名的(由 socketpair(2)创建), 也可以与套接字类型文件相关联. Linux 还支持一种...
一个具体协议族需要通过调用 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 ...
unix socket是基于文件系统和缓冲区实现的,内核中有个缓冲区队列unix_datas,长度取决于socket数量。 代码语言:c++ AI代码解释 #define AF_UNSPEC 0 #define AF_UNIX 1 #define AF_INET 2 #define PF_UNIX AF_UNIX #define PF_INET AF_INET //
if ((listenfd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) ERR_EXIT("socket"); unlink("test_socket");//解决服务端再次创建时,出现:bind: Address already in use //UNIX域协议套接字 //0表示内核自动选择UNIX域协议套接字协议 struct sockaddr_un servaddr; ...
AF_UNIX/PF_UNIX/AF_LOCAL/PF_LOCAL:Unix进程通信协议(本地通信); AF_INET/PF_INET:IPv4网络协议;(不同主机通信) AF_PACKET/PF_PACKET:初级封包接口;(自定义数据包) • type:指定socket类型。常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等。
分别解释一下这两行,socket 第一个参数PF_INET表示是 IPv4 协议族,有时候用AF_INET宏,PF的意思是 Protocol Family 协议族,AF意为 Address Family,在socket.h文件中可以看到,其实是同一个值。 第一个参数还有其他取值PF_INET6表示 IPv6,PF_LOCAL表示本地协议 UNIX 协议族,这些都不常用,还有其他的就更不常用...
对于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 ...