PF_UNIX (也称作 PF_LOCAL ) 套接字族用来在同一机器上的提供有效的进程间通讯.Unix 套接字可以是匿名的(由 socketpair(2)创建), 也可以与套接字类型文件相关联. Linux 还支持一种抽象名字空间, 它是独立于文件系统的. 有效的类型有: SOCK_STREAM 用于面向流的套接字, SOCK_DGRAM 用于面向数据报的套接字...
建议:对于socketpair与socket的domain参数,使用PF_LOCAL系列,而在初始化套接口地址结构时,则使用AF_LOCAL. 例如:z = socket(PF_LOCAL,SOCK_STREAM,0); adr_unix.sin_family = AF_LOCAL;反馈 收藏
// creat unix socket connect_fd=socket(PF_UNIX,SOCK_STREAM,0); if(connect_fd<0){ perror("cannot creat socket"); return-1; } srv_addr.sun_family=AF_UNIX; strcpy(srv_addr.sun_path,UNIX_DOMAIN); //connect server ret=connect(connect_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr))...
* 传递,则不能用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");/* 如果是父进程打开的文件描述符,子进程可以共享 * 这里演示的是子进程打开的文件描述符通过封装的函数传给父进程 *...
listen_fd=socket(PF_UNIX,SOCK_STREAM,0); if(listen_fd<0) { perror("cannot create communication socket"); return 1; } //set server addr_param srv_addr.sun_family=AF_UNIX; strncpy(srv_addr.sun_path,UNIX_DOMAIN,sizeof(srv_addr.sun_path)-1); ...
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; ...
s = socket(PF_INET, SOCK_STREAM, 0); bind(s, (struct sockaddr*)myaddr, sizeof(myaddr)); 下面会看到,对于简单的socket应用编程,所需要做的就是记住流程。 使用客户端-服务器端(client-server)模型作为一个例子。server一般打开端口,被动侦听,不需要知道客户端的IP和端口;而client发起请求,必须知道服务...
socket(2)系统调用会根据AF_UNIX/PF_UNIX找到这个数据结构,然后调用此数据结构的unix_create函数。 看一下socket的创建过程,这里以创建SOCK_STREAM类型为例: sockfd=socket(AF_UNIX,SOCK_STREAM,0); 内核代码的创建函数如下: staticintunix_create(structnet*net,structsocket*sock,intprotocol,intkern){sock->ops...
intfd = socket(AF_UNIX, SOCK_STREAM,0); // 绑定监听 char*socket_path ="./server.sock"; strcpy(serun.sun_path, socket_path); bind(fd, serun, ...); listen(fd,128); while(1){ //接收新连接 conn = accept(fd, ...);
fd = socket(af_inet, sock_stream, 0); if(fd < 0) { fprintf(stderr,"socket: %s\n", strerror(errno)); return-1; } seraddr.sin_family = af_inet; seraddr.sin_port = port; if(inet_pton(af_inet,"127.0.0.1", &seraddr.sin_addr) < 0) {//环回地址 ...