unix_socket = socket(PF_UNIX, type, 0); error = socketpair(PF_UNIX, type, 0, int *sv); DESCRIPTION( 描述 ) PF_UNIX (也称作 PF_LOCAL ) 套接字族用来在同一机器上的提供有效的进程间通讯.Unix 套接字可以是匿名的(由 socketpair(2)创建), 也可以与套接字类型文件相关联. Linux 还支持一种...
socket大家应该很熟悉,以tcp/ip协议族为传输协议,用于跨主机通信,而unixsocket就是在socket的框架上发展出一种IPC机制(进程间通信),UDS(UNIX Domain Socket)提供面向流和面向数据包两种API接口,类似于TCP和UDP,其中SOCK_STREAM是很可靠的,消息既不会丢失也不会顺序错乱,比传统的socket效率更高,一般是tcp传输的两倍,...
struct net_proto_family unix_family_ops = { PF_UNIX, unix_create }; static int __init af_unix_init(void) { ... sock_register(&unix_family_ops); ... return 0; } 所以从上面的代码可以指定,对于 Unix socket 的话,net_families[family]->create() 这行代码实际调用的是 unix_create() 函...
}/*unix domain socket与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍。*/intmain(void) {intlistenfd;if((listenfd = socket(PF_UNIX, SOCK_STREAM,0)) <0) ERR_EXIT("socket error"); unlink("/tmp/test socket");//地址复用structsockaddr_un servaddr; memset(&servaddr,0,sizeof(s...
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; ...
* 传递,则不能用socketpair函数,要用socket()函数 */if(socketpair(PF_UNIX,SOCK_STREAM,0,sockfds)<0)ERR_EXIT("socketpair");pid_t pid;pid=fork();if(pid==-1)ERR_EXIT("fork");/* 如果是父进程打开的文件描述符,子进程可以共享 * 这里演示的是子进程打开的文件描述符通过封装的函数传给父进程 ...
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 //
PF_UNIX是本地(用一个文件). type, 是下面中的一个: SOCK_STREAM(可靠的面向连接的服务或者Stream Sockets) SOCK_DGRAM(数据包服务或者Datagram Sockets) SOCK_SEQPACKET(可靠的有序的分组服务),或者 SOCK_RAW(网络层的原始协议)。 protocol 确定实际使用的运输层。最常见的是IPPROTO_TCP,IPPROTO_SCTP,IPPROTO_UD...
staticconststructproto_opsunix_stream_ops= { .family = PF_UNIX, .owner = THIS_MODULE, .bind = unix_bind, .connect = unix_stream_connect, .socketpair = unix_socketpair, .listen = unix_listen, ... }; 我们找到 connect 函数的具体实现,unix_stream_connect。
分别解释一下这两行,socket 第一个参数PF_INET表示是 IPv4 协议族,有时候用AF_INET宏,PF的意思是 Protocol Family 协议族,AF意为 Address Family,在socket.h文件中可以看到,其实是同一个值。 第一个参数还有其他取值PF_INET6表示 IPv6,PF_LOCAL表示本地协议 UNIX 协议族,这些都不常用,还有其他的就更不常用...