PF_UNIX (也称作 PF_LOCAL ) 套接字族用来在同一机器上的提供有效的进程间通讯.Unix 套接字可以是匿名的(由 socketpair(2)创建), 也可以与套接字类型文件相关联. Linux 还支持一种抽象名字空间, 它是独立于文件系统的. 有效的类型有: SOCK_STREAM 用于面向流的套接字, SOCK_DGRAM 用于面向数据报的套接字...
对于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....
s = socket(PF_INET, SOCK_STREAM, 0); bind(s, (struct sockaddr*)myaddr, sizeof(myaddr)); 下面会看到,对于简单的socket应用编程,所需要做的就是记住流程。 使用客户端-服务器端(client-server)模型作为一个例子。server一般打开端口,被动侦听,不需要知道客户端的IP和端口;而client发起请求,必须知道服务...
*/ 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....
// 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");/* 如果是父进程打开的文件描述符,子进程可以共享 * 这里演示的是子进程打开的文件描述符通过封装的函数传给父进程 ...
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) {//环回地址 ...
int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //将套接字和IP、端口绑定 struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); //每个字节都用0填充 serv_addr.sin_family = AF_INET; //使用IPv4地址 ...
void send_fd(int sock_fd, int send_fd) { struct msghdr msg; struct iovec vec; struct cmsghdr *p_cmsg; char sendchar = 0; vec.iov_base = &sendchar; vec.iov_len = sizeof(sendchar); msg.msg_name = NULL; msg.msg_namelen = 0; ...
int lfd = socket(PF_INET, SOCK_STREAM, 0); if(lfd == -1){ perror("socket"); exit(-1); } struct sockaddr_in saddr; saddr.sin_family = AF_INET; saddr.sin_port = htons(9999); saddr.sin_addr.s_addr = INADDR_ANY; // 绑定 ...